| /* PR sanitizer/81281 */ |
| /* { dg-do compile } */ |
| /* { dg-options "-O2 -fdump-tree-optimized" } */ |
| /* { dg-final { scan-tree-dump-not "\[+=-] \?123\[ ;]" "optimized" } } */ |
| |
| #ifdef __SIZEOF_INT128__ |
| __int128 |
| f1 (int a, long long b) |
| { |
| __int128 f = 123 + a; |
| __int128 g = 123 + b; |
| return f - g; |
| } |
| #endif |
| |
| signed char |
| f2 (int a, long long b) |
| { |
| signed char f = 123 + a; |
| signed char g = 123 + b; |
| return f - g; |
| } |
| |
| signed char |
| f3 (unsigned int a, unsigned long long b) |
| { |
| signed char f = 123 + a; |
| signed char g = 123 + b; |
| return f - g; |
| } |
| |
| unsigned char |
| f4 (unsigned int a, unsigned long long b) |
| { |
| unsigned char f = 123 + a; |
| unsigned char g = 123 + b; |
| return f - g; |
| } |
| |
| /* This isn't optimized yet. */ |
| #if 0 |
| long long |
| f5 (int a) |
| { |
| long long f = 123 + a; |
| long long g = 123; |
| return f - g; |
| } |
| #endif |
| |
| signed char |
| f6 (long long a) |
| { |
| signed char f = 123 + a; |
| signed char g = 123; |
| return f - g; |
| } |
| |
| signed char |
| f7 (unsigned int a) |
| { |
| signed char f = 123 + a; |
| signed char g = 123; |
| return f - g; |
| } |
| |
| unsigned char |
| f8 (unsigned long int a) |
| { |
| unsigned char f = 123 + a; |
| unsigned char g = 123; |
| return f - g; |
| } |
| |
| long long |
| f9 (int a) |
| { |
| long long f = 123; |
| long long g = 123 + a; |
| return f - g; |
| } |
| |
| signed char |
| f10 (long long a) |
| { |
| signed char f = 123; |
| signed char g = 123 + a; |
| return f - g; |
| } |
| |
| signed char |
| f11 (unsigned int a) |
| { |
| signed char f = 123; |
| signed char g = 123 + a; |
| return f - g; |
| } |
| |
| unsigned char |
| f12 (unsigned long int a) |
| { |
| unsigned char f = 123; |
| unsigned char g = 123 + a; |
| return f - g; |
| } |