annotate gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-2.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* { dg-do compile } */
kono
parents:
diff changeset
2 /* { dg-options "-O2 -fdump-tree-optimized -std=gnu89" } */
kono
parents:
diff changeset
3
kono
parents:
diff changeset
4 extern void link_error (void);
kono
parents:
diff changeset
5
kono
parents:
diff changeset
6
kono
parents:
diff changeset
7 /* check that cprop for variables of different types still works even
kono
parents:
diff changeset
8 if function calls or assignments to different types of data are
kono
parents:
diff changeset
9 interposed. */
kono
parents:
diff changeset
10
kono
parents:
diff changeset
11 int test7 (int *intarr)
kono
parents:
diff changeset
12 {
kono
parents:
diff changeset
13 extern int foo7 (int);
kono
parents:
diff changeset
14 int u = 7, v1;
kono
parents:
diff changeset
15 foo7 (u);
kono
parents:
diff changeset
16 v1 = u;
kono
parents:
diff changeset
17 if (v1 != 7)
kono
parents:
diff changeset
18 link_error ();
kono
parents:
diff changeset
19 return v1;
kono
parents:
diff changeset
20 }
kono
parents:
diff changeset
21
kono
parents:
diff changeset
22 int test77 (int *arr)
kono
parents:
diff changeset
23 {
kono
parents:
diff changeset
24 int u = 7, v1;
kono
parents:
diff changeset
25 arr[0] = 4;
kono
parents:
diff changeset
26 v1 = u;
kono
parents:
diff changeset
27 if (v1 != 7)
kono
parents:
diff changeset
28 link_error ();
kono
parents:
diff changeset
29 return v1 + arr[0];
kono
parents:
diff changeset
30 }
kono
parents:
diff changeset
31
kono
parents:
diff changeset
32 int test777 (void)
kono
parents:
diff changeset
33 {
kono
parents:
diff changeset
34 extern int foo(int *);
kono
parents:
diff changeset
35 int u = 7, v1;
kono
parents:
diff changeset
36 static int sarr[10];
kono
parents:
diff changeset
37 sarr[0] = 4;
kono
parents:
diff changeset
38 v1 = u;
kono
parents:
diff changeset
39 if (v1 != 7)
kono
parents:
diff changeset
40 link_error ();
kono
parents:
diff changeset
41 foo (sarr);
kono
parents:
diff changeset
42 return v1 + sarr[0];
kono
parents:
diff changeset
43 }
kono
parents:
diff changeset
44
kono
parents:
diff changeset
45 int garr[10];
kono
parents:
diff changeset
46 int test7777 (void)
kono
parents:
diff changeset
47 {
kono
parents:
diff changeset
48 int u = 7, v1;
kono
parents:
diff changeset
49 garr[0] = 4;
kono
parents:
diff changeset
50 v1 = u;
kono
parents:
diff changeset
51 if (v1 != 7)
kono
parents:
diff changeset
52 link_error ();
kono
parents:
diff changeset
53 return v1 + garr[0];
kono
parents:
diff changeset
54 }
kono
parents:
diff changeset
55
kono
parents:
diff changeset
56 int test88 (int *arr)
kono
parents:
diff changeset
57 {
kono
parents:
diff changeset
58 static int l;
kono
parents:
diff changeset
59 int v1;
kono
parents:
diff changeset
60 l = 8;
kono
parents:
diff changeset
61 arr[0] = 4;
kono
parents:
diff changeset
62 v1 = l;
kono
parents:
diff changeset
63 if (v1 != 8)
kono
parents:
diff changeset
64 link_error ();
kono
parents:
diff changeset
65 l = foo88 (l);
kono
parents:
diff changeset
66 return v1 + arr[0];
kono
parents:
diff changeset
67 }
kono
parents:
diff changeset
68
kono
parents:
diff changeset
69 int test888 (void)
kono
parents:
diff changeset
70 {
kono
parents:
diff changeset
71 static int l;
kono
parents:
diff changeset
72 extern int foo(int *);
kono
parents:
diff changeset
73 int v1;
kono
parents:
diff changeset
74 static int sarr[10];
kono
parents:
diff changeset
75 l = 8;
kono
parents:
diff changeset
76 sarr[0] = 4;
kono
parents:
diff changeset
77 v1 = l;
kono
parents:
diff changeset
78 if (v1 != 8)
kono
parents:
diff changeset
79 link_error ();
kono
parents:
diff changeset
80 foo (sarr);
kono
parents:
diff changeset
81 l = foo88(l);
kono
parents:
diff changeset
82 return v1 + sarr[0];
kono
parents:
diff changeset
83 }
kono
parents:
diff changeset
84
kono
parents:
diff changeset
85 int test8888 (void)
kono
parents:
diff changeset
86 {
kono
parents:
diff changeset
87 static int l;
kono
parents:
diff changeset
88 int v1;
kono
parents:
diff changeset
89 l = 8;
kono
parents:
diff changeset
90 garr[0] = 4;
kono
parents:
diff changeset
91 v1 = l;
kono
parents:
diff changeset
92 if (v1 != 8)
kono
parents:
diff changeset
93 link_error ();
kono
parents:
diff changeset
94 return v1 + garr[0];
kono
parents:
diff changeset
95 }
kono
parents:
diff changeset
96
kono
parents:
diff changeset
97
kono
parents:
diff changeset
98
kono
parents:
diff changeset
99 /* global var */
kono
parents:
diff changeset
100 int g9;
kono
parents:
diff changeset
101 int garr9[10];
kono
parents:
diff changeset
102 int test9 (int *intarr)
kono
parents:
diff changeset
103 {
kono
parents:
diff changeset
104 extern int foo9 (int) __attribute__ ((const));
kono
parents:
diff changeset
105 int h, v;
kono
parents:
diff changeset
106 g9 = 9;
kono
parents:
diff changeset
107 h = foo9 (g9);
kono
parents:
diff changeset
108 v = g9;
kono
parents:
diff changeset
109 if (v != 9)
kono
parents:
diff changeset
110 link_error ();
kono
parents:
diff changeset
111 return g9;
kono
parents:
diff changeset
112 }
kono
parents:
diff changeset
113
kono
parents:
diff changeset
114 int test99 (int *intarr)
kono
parents:
diff changeset
115 {
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
116 extern int foo99 (int) __attribute__ ((pure));
111
kono
parents:
diff changeset
117 int h, v;
kono
parents:
diff changeset
118 g9 = 9;
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
119 h = foo99 (g9);
111
kono
parents:
diff changeset
120 v = g9;
kono
parents:
diff changeset
121 if (v != 9)
kono
parents:
diff changeset
122 link_error ();
kono
parents:
diff changeset
123 return g9;
kono
parents:
diff changeset
124 }
kono
parents:
diff changeset
125
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
126 /* foo9 is const because of its declaration in test9. */
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
127 extern int foo9 (int);
111
kono
parents:
diff changeset
128
kono
parents:
diff changeset
129 int test999 (int *arr)
kono
parents:
diff changeset
130 {
kono
parents:
diff changeset
131 static int l;
kono
parents:
diff changeset
132 int v1;
kono
parents:
diff changeset
133 g9 = 9;
kono
parents:
diff changeset
134 l = 4;
kono
parents:
diff changeset
135 v1 = g9;
kono
parents:
diff changeset
136 if (v1 != 9)
kono
parents:
diff changeset
137 link_error ();
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
138 l = foo9 (l);
111
kono
parents:
diff changeset
139 return v1 + l;
kono
parents:
diff changeset
140 }
kono
parents:
diff changeset
141
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
142 /* foo99 is pure because of its declaration in test99. */
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
143 extern int foo9 (int);
111
kono
parents:
diff changeset
144
kono
parents:
diff changeset
145 int test9999 (void)
kono
parents:
diff changeset
146 {
kono
parents:
diff changeset
147 int v1;
kono
parents:
diff changeset
148 static int sarr[10];
kono
parents:
diff changeset
149 g9 = 9;
kono
parents:
diff changeset
150 sarr[0] = 4;
kono
parents:
diff changeset
151 v1 = g9;
kono
parents:
diff changeset
152 if (v1 != 9)
kono
parents:
diff changeset
153 link_error ();
kono
parents:
diff changeset
154 foo (sarr);
kono
parents:
diff changeset
155 g9 = foo99 (g9);
kono
parents:
diff changeset
156 return v1 + sarr[0];
kono
parents:
diff changeset
157 }
kono
parents:
diff changeset
158
kono
parents:
diff changeset
159
kono
parents:
diff changeset
160 int test99999 (void)
kono
parents:
diff changeset
161 {
kono
parents:
diff changeset
162 int v1;
kono
parents:
diff changeset
163 g9 = 9;
kono
parents:
diff changeset
164 garr9[0] = 4;
kono
parents:
diff changeset
165 v1 = g9;
kono
parents:
diff changeset
166 if (v1 != 9)
kono
parents:
diff changeset
167 link_error ();
kono
parents:
diff changeset
168 return v1 + garr9[0];
kono
parents:
diff changeset
169 }
kono
parents:
diff changeset
170
kono
parents:
diff changeset
171
kono
parents:
diff changeset
172 /* There should be not link_error calls, if there is any the
kono
parents:
diff changeset
173 optimization has failed */
kono
parents:
diff changeset
174 /* { dg-final { scan-tree-dump-times "link_error" 0 "optimized"} } */