This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Fix PR53501
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.