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.