/* PR tree-optimization/59014 */ __attribute__((noinline, noclone)) long long int foo (long long int x, long long int y) { if (((int) x | (int) y) != 0) return 6; return x + y; } int main () { if (sizeof (long long) == sizeof (int)) return 0; int shift_half = sizeof (int) * __CHAR_BIT__ / 2; long long int x = (3LL << shift_half) << shift_half; long long int y = (5LL << shift_half) << shift_half; long long int z = foo (x, y); if (z != ((8LL << shift_half) << shift_half)) __builtin_abort (); return 0; }