| /* { dg-do run } */ |
| /* { dg-require-effective-target int32plus } */ |
| /* { dg-options "-O2 -fdump-tree-fre1" } */ |
| |
| long long int a = -465274079317386463LL; |
| int b = 856872806; |
| int c = -1940894202; |
| int d = 1718449211; |
| int e = -392681565; |
| unsigned long long int f = 13521452247506316486ULL; |
| int g = -13194608; |
| |
| __attribute__((noinline, noclone)) |
| void foo () |
| { |
| if (!a - a) |
| c = b = 0; |
| else |
| d = 3UL * a == 0; |
| if (g / a) |
| e = 0 < -a + 500849970701012771LL + (unsigned long) -a; |
| else |
| f = 4081116982543369LL & a; |
| } |
| |
| int |
| main () |
| { |
| asm volatile ("" : : : "memory"); |
| foo (); |
| if (f != 2818598057803777LL) |
| __builtin_abort (); |
| return 0; |
| } |
| |
| /* Should CSE all loads of a. */ |
| /* { dg-final { scan-tree-dump-times " = a;" 1 "fre1" } } */ |