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.