[Bug tree-optimization/63986] [5 Regression][SH] gcc.target/sh/pr51244-15.c failures
ppalka at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Nov 20 13:13:00 GMT 2014
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63986
--- Comment #5 from ppalka at gcc dot gnu.org ---
(In reply to Richard Biener from comment #3)
> Ok, now already existing forwprop code gets fed with
>
> <bb 2>:
> _3 = a_2(D) == 0;
> x_4 = (char) _3;
> _7 = ~_3;
> _8 = (int) _7;
> MEM[(int *)d_5(D) + 8B] = _8;
> if (x_4 != 0)
>
> where we now in the first forwprop pass identified the opportunity
> to use ~_3 instead of x_4 == 0 thus x_4 is now no longer multi-use.
> This makes us optimize if (x_4 != 0) to if (_3 != 0) which we
> re-optimize in fold_gimple_cond now to '_3' and then of course
> if (_3 != 0) (err, and we return "changed"....) which means we
> now propagate _again_ via forward_propagate_into_gimple_cond
> which now specifically allows aggressive forwarding of compares,
> bypassing single-use restrictions. See
>
> 2014-11-16 Patrick Palka <ppalka@gcc.gnu.org>
>
> PR middle-end/63790
> * tree-ssa-forwprop.c (forward_propagate_into_comparison_1):
> Always combine comparisons or conversions from booleans.
>
> thus me fixing my "mistake" does not help anymore.
I worried that such an issue might pop up...
If you think my patch should be reverted, note that there is a more benign
version of the patch here
https://gcc.gnu.org/ml/gcc-patches/2014-11/msg00963.html (which still fixes the
test case I was originally interested in fixing).
More information about the Gcc-bugs
mailing list