1 /* { dg-do run } */
2 /* { dg-require-effective-target int32plus } */
3 /* { dg-options "-O2 -fdump-tree-fre1" } */
4 
5 long long int a = -465274079317386463LL;
6 int b = 856872806;
7 int c = -1940894202;
8 int d = 1718449211;
9 int e = -392681565;
10 unsigned long long int f = 13521452247506316486ULL;
11 int g = -13194608;
12 
13 __attribute__((noinline, noclone))
foo()14 void foo ()
15 {
16   if (!a - a)
17     c = b = 0;
18   else
19     d = 3UL * a == 0;
20   if (g / a)
21     e = 0 < -a + 500849970701012771LL + (unsigned long) -a;
22   else
23     f = 4081116982543369LL & a;
24 }
25 
26 int
main()27 main ()
28 {
29   asm volatile ("" : : : "memory");
30   foo ();
31   if (f != 2818598057803777LL)
32     __builtin_abort ();
33   return 0;
34 }
35 
36 /* Should CSE all loads of a.  */
37 /* { dg-final { scan-tree-dump-times " = a;" 1 "fre1" } } */
38