https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100363
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Component|middle-end |tree-optimization
Keywords| |wrong-code
--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
On the trunk, on aarch64:
There should be an aliasing check
sfrom_289 = from_176 + 18446744073709551615;
_871 = _843 + 18446744073709551615;
_872 = _871 > 6;
_873 = prephitmp_803 + 2;
_874 = from_176 + 3;
_875 = _873 - _874;
_876 = (sizetype) _875;
_877 = _876 > 12;
_878 = _872 & _877;
if (_878 != 0)
goto <bb 116>; [80.00%]
else
goto <bb 126>; [20.00%]
_873 is the sout
In GCC 10 branch we get something similar:
sfrom_289 = from_176 + 18446744073709551615;
_859 = _823 + 18446744073709551615;
_860 = _859 > 8;
_861 = prephitmp_783 + 2;
_862 = from_176 + 3;
_863 = _861 - _862;
_864 = (sizetype) _863;
_865 = _864 > 12;
_866 = _860 & _865;
if (_866 != 0)
goto <bb 116>; [80.00%]
else
goto <bb 126>; [20.00%]
But I Notice 8 vs 6 here.