1 /* PR tree-optimization/94734 */
2 
3 __attribute__((noipa)) int
foo(int n)4 foo (int n)
5 {
6   int arr[16], s = 0;
7   for (int i = 0; i < n; i++)
8     {
9       if (i < 16)
10 	arr[i] = i;
11     }
12   for (int i = 0; i < 16; i++)
13     s += arr[i];
14   return s;
15 }
16 
17 __attribute__((noipa)) int
bar(int n,int x,unsigned long y,unsigned long z)18 bar (int n, int x, unsigned long y, unsigned long z)
19 {
20   int arr[16], s = 0;
21   arr[4] = 42;
22   for (int i = 0; i < n; i++)
23     {
24       if (x == (i & 0x25))
25 	arr[y] = i;
26     }
27   return arr[z];
28 }
29 
30 __attribute__((noipa)) int
baz(int n,int x,unsigned long z)31 baz (int n, int x, unsigned long z)
32 {
33   int arr[16], s = 0;
34   arr[12] = 42;
35   for (int i = 0; i < n; i++)
36     {
37       if (x == (i & 0x25))
38 	arr[7] = i;
39     }
40   return arr[z];
41 }
42 
43 int
main()44 main ()
45 {
46   if (foo (10374) != 15 * 16 / 2)
47     __builtin_abort ();
48   if (bar (25, 0x25, (unsigned long) 0xdeadbeefbeefdeadULL, 4) != 42)
49     __builtin_abort ();
50   if (bar (25, 4, 15, 15) != 22)
51     __builtin_abort ();
52   if (baz (25, 0x25, 12) != 42)
53     __builtin_abort ();
54   if (baz (25, 4, 7) != 22)
55     __builtin_abort ();
56   if (baz (25, 4, 12) != 42)
57     __builtin_abort ();
58   return 0;
59 }
60