https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25186
Roger Sayle <roger at nextmovesoftware dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|--- |13.0 Status|NEW |RESOLVED Resolution|--- |FIXED CC| |roger at nextmovesoftware dot com Known to work| |13.0 --- Comment #10 from Roger Sayle <roger at nextmovesoftware dot com> --- This is now fixed (at the tree level) on mainline (and was fixed in GCC 13). For those wondering, LSHIFT_EXPR is well defined (in this case) in GIMPLE, hence the "optimized" dump currently looks like: void f () { short int * a.0_1; short int _2; short int _3; a.0_1 = a; _2 = *a.0_1; _3 = _2 << 1; *a.0_1 = _3; return; }