/* PR rtl-optimization/78546 */ /* { dg-do run { target int128 } } */ typedef unsigned __int128 u128; u128 b; static inline u128 foo (u128 p1) { p1 += ~b; return -p1; } int main () { asm volatile ("" : : : "memory"); u128 x = foo (~0x7fffffffffffffffLL); if (x != 0x8000000000000001ULL) __builtin_abort (); return 0; }