/* PR c/4308 This testcase failed because 0x8000000000000000 >> 0 was incorrectly folded into 0xffffffff00000000. */ extern void abort (void); extern void exit (int); long long foo (void) { long long C = 1ULL << 63, X; int Y = 32; X = C >> (Y & 31); return X; } int main (void) { if (foo () != 1ULL << 63) abort (); exit (0); }