annotate gcc/testsuite/gcc.dg/ipa/pr85449.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
131
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
1 /* { dg-do run } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
2 /* { dg-options "-O3 -fno-early-inlining" } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
3
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
4 int array[128];
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
5
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
6 volatile int v = 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
7 volatile int blah = 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
8
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
9 int __attribute__((noipa))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
10 obscured_zero ()
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
11 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
12 return 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
13 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
14
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
15 int __attribute__((noipa))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
16 obscured_one ()
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
17 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
18 return 1;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
19 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
20
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
21 int __attribute__((noipa))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
22 obscured_two ()
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
23 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
24 return 2;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
25 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
26
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
27 static
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
28 void cb1 (int l)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
29 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
30 v = 25;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
31 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
32
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
33 static
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
34 void cb2 (int l)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
35 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
36 v = 125;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
37 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
38
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
39 typedef void (*silly_callback)(int);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
40
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
41 silly_callback __attribute__((noipa))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
42 get_callback ()
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
43 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
44 return cb1;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
45 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
46
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
47 static void
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
48 f (int c, int l, silly_callback p)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
49 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
50 int i;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
51
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
52 for (i = 0; i < c; i++)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
53 array[i] = 455;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
54
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
55 for (i = 0; i < 200; i++)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
56 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
57 p (l);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
58 if (obscured_one ())
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
59 break;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
60 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
61
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
62 if (l > 0)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
63 f (c * 2, l - 1, p);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
64 blah = l;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
65 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
66
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
67 int
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
68 main (int argc, char *argv[])
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
69 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
70 int i;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
71 for (i = 0; i < 1000; i++)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
72 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
73 f (0, 5, get_callback ());
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
74 if (v != 25)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
75 __builtin_abort ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
76 if (obscured_one ())
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
77 break;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
78 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
79
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
80 for (i = 0; i < 1000; i++)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
81 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
82 f (obscured_zero (), obscured_two (), cb2);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
83 if (v != 125)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
84 __builtin_abort ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
85 if (obscured_one ())
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
86 break;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
87 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
88
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
89 return 0;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
90 }