1 /* { dg-do run } */
2 /* { dg-options "-O -fwrapv" } */
3 
4 #define DEF(num, T1, T2) T2 f##num(T1 x) { \
5     T1 y = -x; \
6     T2 z = (T2)y; \
7     return -z; \
8 }
9 DEF(0, int, long long)
10 
main()11 int main(){
12     volatile int a = -1 - __INT_MAX__;
13     volatile long long b = f0 (a);
14     volatile long long c = a;
15     volatile long long d = -c;
16     if (b != d)
17       __builtin_abort();
18 }
19