https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115896
--- Comment #2 from Gabriel Ravier <gabravier at gmail dot com> --- Also somewhat of an opposite to `(a << cst0) == cst1` is `(cst0 << a) == cst1`, which seems to be optimized by GCC in certain cases but not for `cst1 == 0`, which LLVM does for e.g.: #include <stdint.h> bool f3(int32_t y) { int32_t shl = 128 << y; return shl == 0; } (which can be optimized to `return (uint32_t)y >= 25`, which LLVM does but not GCC)