https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77822
--- Comment #25 from Dominik Vogt <vogt at linux dot vnet.ibm.com> --- I see. This test verifies that a negative "pos" is indeed rejected: -- #include <stdint.h> int g; void foo(int64_t b) { if (b >> 65 & 1) g = b; } --