https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90578
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |rguenth at gcc dot gnu.org Resolution|--- |INVALID --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- left-shift by negative value is undefined. arithmetic left-shift _of_ a negative value is undefined as well. I see lshift translates to a logical shift so the 2nd issue is moot. But we have in .gimple: _1 = (unsigned int) D.3899; _2 = _1 << -30; note that constant folding treats _1 << -30 as _1 >> 30 but at -O0 we ask the CPU to perform this shift via sall %cl, %edx which simply truncates -30 by & 255.