https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116845
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |missed-optimization
--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Actually the differene comes from frowprop:
LP64 does:
Applying pattern match.pd:4328, gimple-match-8.cc:1208
gimple_simplified to _16 = j.0_1 + 18446744073709551615;
_3 = _16 * 4;
Matching expression match.pd:160, gimple-match-10.cc:33
Matching expression match.pd:160, gimple-match-10.cc:33
Matching expression match.pd:160, gimple-match-10.cc:33
...
Removing dead stmt:_2 = j.0_1 * 4;
So why did it match in LP64 but not ILP32.
Because the upper 2 bits are zero.