This is a bug that we (actually Pierre Muller) found by code inspection. We don't need to debug any program in order to reproduce the problem: (gdb) set lang ada (gdb) ptype 3 / 2.0 type = <4-byte integer> The debugger was using the type of the left hand operand in order to determine the type of the result. Although the expression is strictly illegal in Ada, we try to be accepting in what the user can enter, and we already do handle the case where the user prints the actual result instead of querying the result type: (gdb) print 3 / 2.0 $1 = 1.5 (gdb) ptype $ type = <12-byte float> So it seems reasonable and even expected that the ptype above should return: (gdb) ptype 3 / 2.0 type = <12-byte float> Especially since this was very easy to do. 2009-03-12 Joel Brobecker * ada-lang.c (ada_evaluate_subexp) : make sure to promote the operands when noside is EVAL_AVOID_SIDE_EFFECTS. 2009-03-12 Joel Brobecker * gdb.ada/ptype_arith_binop.exp: New testcase. Tested on amd64-linux. Checked in. (I do realize now that I forgot to remove some commented out code in the .exp file, so I'll fix that next. Sorry!) -- Joel