/* { dg-options "-mdejagnu-tune=power4 -O2 -fcompare-debug -fno-if-conversion -fno-guess-branch-probability" } */ /* { dg-require-effective-target int128 } */ extern int bar(int i); typedef unsigned long u64; int g; __int128 h; void foo(int a, int b) { int i; char u8_1 = g, u8_3 = a; u64 u64_1 = bar(0), u64_3 = u8_3 * u64_1; __int128 u128_1 = h ^ __builtin_expect(i, 0); u64 u64_4 = u64_1 << ((__builtin_sub_overflow_p(0, u8_1, (u64)0) ^ u128_1) & 8); u64 u64_r = b + u64_3 + u64_4; bar((short)u64_r + u8_3); }