https://gcc.gnu.org/bugzilla/show_bug.cgi?id=46091
--- Comment #2 from Avi Kivity <a...@cloudius-systems.com> --- Another instance: unsigned long clear(unsigned long x) { return x & ~ ((unsigned long)1 << 63); } This compiles to movabs+andq, while it could compile to a single btr instruction.