1/* { dg-do run } */ 2/* { dg-options "-fsanitize=signed-integer-overflow -Wno-unused-variable" } */ 3 4#define INT_MAX __INT_MAX__ 5#define INT_MIN (-__INT_MAX__ - 1) 6#define LONG_MAX __LONG_MAX__ 7#define LONG_MIN (-__LONG_MAX__ - 1L) 8#define LLONG_MAX __LONG_LONG_MAX__ 9#define LLONG_MIN (-__LONG_LONG_MAX__ - 1L) 10 11int 12main (void) 13{ 14 volatile int j = INT_MIN; 15 volatile int i = 1; 16 volatile int k = j - i; 17 j--; 18 j = INT_MIN + 100; 19 j -= (1 << 10); 20 21 j = INT_MIN; 22 i = -1; 23 k = j - -i; 24 25 i = INT_MIN + 1000; 26 i -= (1 << 20); 27 28 volatile long int l = LONG_MIN; 29 volatile long int m = 1; 30 volatile long int n = l - m; 31 l--; 32 l = LONG_MIN + 100; 33 l -= (1 << 10); 34 35 l = LONG_MIN; 36 m = -1; 37 n = l - -m; 38 39 m = LONG_MIN + 1000; 40 m -= (1 << 20); 41 42 return 0; 43} 44 45/* { dg-output "signed integer overflow: -2147483648 - 1 cannot be represented in type 'int'\[^\n\r]*(\n|\r\n|\r)" } */ 46/* { dg-output "\[^\n\r]*signed integer overflow: -2147483648 - 1 cannot be represented in type 'int'\[^\n\r]*(\n|\r\n|\r)" } */ 47/* { dg-output "\[^\n\r]*signed integer overflow: -2147483548 - 1024 cannot be represented in type 'int'\[^\n\r]*(\n|\r\n|\r)" } */ 48/* { dg-output "\[^\n\r]*signed integer overflow: -2147483648 - 1 cannot be represented in type 'int'\[^\n\r]*(\n|\r\n|\r)" } */ 49/* { dg-output "\[^\n\r]*signed integer overflow: -2147482648 - 1048576 cannot be represented in type 'int'\[^\n\r]*(\n|\r\n|\r)" } */ 50/* { dg-output "\[^\n\r]*signed integer overflow: -\[^\n\r]* - 1 cannot be represented in type 'long int'\[^\n\r]*(\n|\r\n|\r)" } */ 51/* { dg-output "\[^\n\r]*signed integer overflow: -\[^\n\r]* - 1 cannot be represented in type 'long int'\[^\n\r]*(\n|\r\n|\r)" } */ 52/* { dg-output "\[^\n\r]*signed integer overflow: -\[^\n\r]* - 1024 cannot be represented in type 'long int'\[^\n\r]*(\n|\r\n|\r)" } */ 53/* { dg-output "\[^\n\r]*signed integer overflow: -\[^\n\r]* - 1 cannot be represented in type 'long int'\[^\n\r]*(\n|\r\n|\r)" } */ 54/* { dg-output "\[^\n\r]*signed integer overflow: -\[^\n\r]* - 1048576 cannot be represented in type 'long int'\[^\n\r]*" } */ 55