https://gcc.gnu.org/bugzilla/show_bug.cgi?id=17886
Roger Sayle <roger at nextmovesoftware dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |roger at nextmovesoftware dot com Resolution|--- |FIXED Status|NEW |RESOLVED --- Comment #27 from Roger Sayle <roger at nextmovesoftware dot com> --- I believe that this issue has been fixed (for a long time). For Andi's testcases in comment #3, -fdump-tree-optimized reveals all these cases are perceived as rotations by the early middle-end. long long unsigned int f (long long unsigned int x, int y) { return x_1(D) r<< y_2(D); } unsigned int f2 (unsigned int x, int y) { return x_1(D) r<< y_2(D); } long long unsigned int f3 (long long unsigned int x) { return x_1(D) r>> 55; } long unsigned int f4 (unsigned int x) { return x_1(D) r>> 22; }