On Fri, 1 Jun 2012, Eric Botcazou wrote:

> > The issue is that fold_plusminus_mult re-writes the multiplication
> > from unsigned to signed for the failing testcase, introducing
> > undefined overflow.
> 
> fold_plusminus_mult or fold_binary?  My understanding is that the problem is 
> fold_binary incorrectly stripping the outer signedness conversion.  If so, 
> then the fix could test for this case precisely instead of disabling the 
> transformation in all cases, including when there is no signedness conversion.

fold_binary is not "incorrectly" stripping the sign conversion, it is
fold_plusminus_mult not properly dealing with that situation.  In practice
non-sign-"nop"-conversions stipped by STRIP_NOPS are already stripped
by properly folding a conversion at generation time, so the STRIP_NOPS
calls should be no-ops (well, apart from stripping NON_LVALUE trees I 
suppose).

So, what case do you see disabled where there is no sign conversion
involved?

Richard.

Reply via email to