/* { dg-do run } */ /* { dg-options "-O -fwrapv" } */ #define DEF(num, T1, T2) T2 f##num(T1 x) { \ T1 y = -x; \ T2 z = (T2)y; \ return -z; \ } DEF(0, int, long long) int main(){ volatile int a = -1 - __INT_MAX__; volatile long long b = f0 (a); volatile long long c = a; volatile long long d = -c; if (b != d) __builtin_abort(); }