On Fri, 1 Jun 2012, Eric Botcazou wrote: > > So, what case do you see disabled where there is no sign conversion > > involved? > > For the Ada testcase I attached, in fold_binary_loc we have: > > (gdb) p debug_tree(op0) > <nop_expr 0x7ffff700c5a0 > type <integer_type 0x7ffff6fdd0a8 bitsizetype public unsigned sizetype DI > size <integer_cst 0x7ffff6fccec0 constant visited 64> > unit size <integer_cst 0x7ffff6fccee0 constant visited 8> > align 64 symtab 0 alias set -1 canonical type 0x7ffff6fdd0a8 > precision > 64 min <integer_cst 0x7ffff6fccf60 0> max <integer_cst 0x7ffff6fccf80 -1>> > readonly > arg 0 <mult_expr 0x7ffff700e030 > type <integer_type 0x7ffff6fdd000 sizetype public unsigned sizetype > DI > size <integer_cst 0x7ffff6fccec0 64> unit size <integer_cst 0x7ffff6fccee0 8> > align 64 symtab 0 alias set -1 canonical type 0x7ffff6fdd000 > precision 64 min <integer_cst 0x7ffff6fccf00 0> max <integer_cst > 0x7ffff6fccf20 -1>> > readonly > > (gdb) p debug_tree(arg0) > <mult_expr 0x7ffff700e030 > type <integer_type 0x7ffff6fdd000 sizetype public unsigned sizetype DI > size <integer_cst 0x7ffff6fccec0 constant visited 64> > unit size <integer_cst 0x7ffff6fccee0 constant visited 8> > align 64 symtab 0 alias set -1 canonical type 0x7ffff6fdd000 > precision > 64 min <integer_cst 0x7ffff6fccf00 0> max <integer_cst 0x7ffff6fccf20 -1>> > readonly
Ah, I see. So the proper fix would be to use STRIP_NOP()ed op0/op1, something not readily available though. Richard.