• Home
  • Raw
  • Download

Lines Matching +full:gcc +full:- +full:4

1 // RUN: %clang_cc1 -Wno-return-type -Wno-unused-value -emit-llvm %s -o - | FileCheck %s
3 // CHECK: @i = common global [[INT:i[0-9]+]] 0
21 // Assignments in C++ yield l-values, not r-values, and the situations
22 // that do implicit lvalue-to-rvalue conversion are substantially
25 // CHECK-LABEL: define {{.*}}void @test()
29 …// CHECK-NEXT: load volatile [[INT]], [[INT]]* getelementptr inbounds ([[CINT]], [[CINT]]* @ci, i3… in test()
30 …// CHECK-NEXT: load volatile [[INT]], [[INT]]* getelementptr inbounds ([[CINT]], [[CINT]]* @ci, i3… in test()
31 // CHECK-NEXT: sitofp [[INT]] in test()
33 …// CHECK-NEXT: load volatile [[INT]], [[INT]]* getelementptr inbounds ([[CINT]], [[CINT]]* @ci, i3… in test()
34 …// CHECK-NEXT: load volatile [[INT]], [[INT]]* getelementptr inbounds ([[CINT]], [[CINT]]* @ci, i3… in test()
36 // CHECK-NEXT: bitcast in test()
37 // CHECK-NEXT: memcpy in test()
39 …// CHECK-NEXT: [[R:%.*]] = load volatile [[INT]], [[INT]]* getelementptr inbounds ([[CINT]], [[CIN… in test()
40 …// CHECK-NEXT: [[I:%.*]] = load volatile [[INT]], [[INT]]* getelementptr inbounds ([[CINT]], [[CIN… in test()
41 …// CHECK-NEXT: store volatile [[INT]] [[R]], [[INT]]* getelementptr inbounds ([[CINT]], [[CINT]]* … in test()
42 …// CHECK-NEXT: store volatile [[INT]] [[I]], [[INT]]* getelementptr inbounds ([[CINT]], [[CINT]]* … in test()
44 // CHECK-NEXT: [[T:%.*]] = load volatile [[INT]], [[INT]]* @j in test()
45 // CHECK-NEXT: store volatile [[INT]] [[T]], [[INT]]* @i in test()
47 …// CHECK-NEXT: [[R1:%.*]] = load volatile [[INT]], [[INT]]* getelementptr inbounds ([[CINT]], [[CI… in test()
48 …// CHECK-NEXT: [[I1:%.*]] = load volatile [[INT]], [[INT]]* getelementptr inbounds ([[CINT]], [[CI… in test()
49 …// CHECK-NEXT: [[R2:%.*]] = load volatile [[INT]], [[INT]]* getelementptr inbounds ([[CINT]], [[CI… in test()
50 …// CHECK-NEXT: [[I2:%.*]] = load volatile [[INT]], [[INT]]* getelementptr inbounds ([[CINT]], [[CI… in test()
52 // CHECK-NEXT: [[R:%.*]] = add [[INT]] [[R2]], [[R1]] in test()
53 // CHECK-NEXT: [[I:%.*]] = add [[INT]] [[I2]], [[I1]] in test()
54 …// CHECK-NEXT: store volatile [[INT]] [[R]], [[INT]]* getelementptr inbounds ([[CINT]], [[CINT]]* … in test()
55 …// CHECK-NEXT: store volatile [[INT]] [[I]], [[INT]]* getelementptr inbounds ([[CINT]], [[CINT]]* … in test()
58 …// CHECK-NEXT: [[R1:%.*]] = load volatile [[INT]], [[INT]]* getelementptr inbounds ([[CINT]], [[CI… in test()
59 …// CHECK-NEXT: [[I1:%.*]] = load volatile [[INT]], [[INT]]* getelementptr inbounds ([[CINT]], [[CI… in test()
60 …// CHECK-NEXT: [[R2:%.*]] = load volatile [[INT]], [[INT]]* getelementptr inbounds ([[CINT]], [[CI… in test()
61 …// CHECK-NEXT: [[I2:%.*]] = load volatile [[INT]], [[INT]]* getelementptr inbounds ([[CINT]], [[CI… in test()
62 // CHECK-NEXT: [[R:%.*]] = add [[INT]] [[R2]], [[R1]] in test()
63 // CHECK-NEXT: [[I:%.*]] = add [[INT]] [[I2]], [[I1]] in test()
64 …// CHECK-NEXT: store volatile [[INT]] [[R]], [[INT]]* getelementptr inbounds ([[CINT]], [[CINT]]* … in test()
65 …// CHECK-NEXT: store volatile [[INT]] [[I]], [[INT]]* getelementptr inbounds ([[CINT]], [[CINT]]* … in test()
66 …// CHECK-NEXT: [[R2:%.*]] = load volatile [[INT]], [[INT]]* getelementptr inbounds ([[CINT]], [[CI… in test()
67 …// CHECK-NEXT: [[I2:%.*]] = load volatile [[INT]], [[INT]]* getelementptr inbounds ([[CINT]], [[CI… in test()
69 // CHECK-NEXT: add [[INT]] [[R]], [[R2]] in test()
70 // CHECK-NEXT: add [[INT]] [[I]], [[I2]] in test()
72 // CHECK-NEXT: call void asm in test()
74 // CHECK-NEXT: load volatile in test()
75 // CHECK-NEXT: load volatile in test()
76 // CHECK-NEXT: add nsw [[INT]] in test()
77 // CHECK-NEXT: store volatile in test()
78 // CHECK-NEXT: load volatile in test()
79 // CHECK-NEXT: add nsw [[INT]] in test()
81 // CHECK-NEXT: call void asm in test()
83 // CHECK-NEXT: load volatile in test()
84 // CHECK-NEXT: load volatile in test()
85 // CHECK-NEXT: add nsw [[INT]] in test()
86 // CHECK-NEXT: store volatile in test()
87 // CHECK-NEXT: add nsw [[INT]] in test()
89 // CHECK-NEXT: call void asm in test()
91 // CHECK-NEXT: load volatile in test()
92 // CHECK-NEXT: load volatile in test()
93 // CHECK-NEXT: load volatile in test()
94 // CHECK-NEXT: load volatile in test()
95 // CHECK-NEXT: add [[INT]] in test()
96 // CHECK-NEXT: add [[INT]] in test()
99 // CHECK-NEXT: load volatile in test()
101 // CHECK-NEXT: load volatile in test()
102 // CHECK-NEXT: load volatile in test()
104 // CHECK-NEXT: call void asm in test()
106 // CHECK-NEXT: load volatile in test()
107 // CHECK-NEXT: store volatile in test()
109 // CHECK-NEXT: load volatile in test()
110 // CHECK-NEXT: store volatile in test()
111 // CHECK-NEXT: sitofp in test()
113 // CHECK-NEXT: load volatile in test()
115 // CHECK-NEXT: load volatile in test()
116 // CHECK-NEXT: store volatile in test()
118 // CHECK-NEXT: load volatile in test()
119 // CHECK-NEXT: store volatile in test()
120 // CHECK-NEXT: store volatile in test()
123 // CHECK-NEXT: load volatile in test()
124 // CHECK-NEXT: store volatile in test()
127 // CHECK-NEXT: load volatile in test()
128 // CHECK-NEXT: icmp in test()
129 // CHECK-NEXT: br i1 in test()
131 // CHECK-NEXT: store volatile in test()
132 // CHECK-NEXT: br label in test()
134 // CHECK-NEXT: store volatile in test()
135 // CHECK-NEXT: br label in test()
138 // CHECK-NEXT: load volatile in test()
139 // CHECK-NEXT: load volatile in test()
140 // CHECK-NEXT: store volatile in test()
142 // CHECK-NEXT: load volatile in test()
143 // CHECK-NEXT: store volatile in test()
144 // CHECK-NEXT: load volatile in test()
146 // CHECK-NEXT: load volatile in test()
147 // CHECK-NEXT: store volatile in test()
148 // CHECK-NEXT: load volatile in test()
149 // CHECK-NEXT: store volatile in test()
151 // CHECK-NEXT: load volatile in test()
152 // CHECK-NEXT: store volatile in test()
153 // CHECK-NEXT: load volatile in test()
155 // CHECK-NEXT: load volatile in test()
156 // CHECK-NEXT: load volatile in test()
158 // CHECK-NEXT: load volatile in test()
159 // CHECK-NEXT: trunc in test()
160 // CHECK-NEXT: store volatile in test()
161 // CHECK-NEXT: sext in test()
162 // CHECK-NEXT: store volatile in test()
164 // CHECK-NEXT: load volatile in test()
165 // CHECK-NEXT: load volatile in test()
166 // CHECK-NEXT: add nsw [[INT]] in test()
167 // CHECK-NEXT: store volatile in test()
169 // CHECK-NEXT: load volatile in test()
170 // CHECK-NEXT: load volatile in test()
173 // CHECK-NEXT: load volatile in test()
174 // CHECK-NEXT: load volatile in test()
176 // CHECK-NEXT: load volatile in test()
177 // CHECK-NEXT: load volatile in test()
178 // CHECK-NEXT: icmp ne in test()
179 // CHECK-NEXT: icmp ne in test()
180 // CHECK-NEXT: or i1 in test()
183 // CHECK-NEXT: load volatile in test()
184 // CHECK-NEXT: load volatile in test()
185 // CHECK-NEXT: store volatile in test()
186 // CHECK-NEXT: store volatile in test()
188 // CHECK-NEXT: load volatile in test()
189 // CHECK-NEXT: load volatile in test()
190 // CHECK-NEXT: store volatile in test()
191 // CHECK-NEXT: store volatile in test()
192 // CHECK-NEXT: store volatile in test()
193 // CHECK-NEXT: store volatile in test()
195 …// CHECK-NEXT: [[T:%.*]] = load volatile [[INT]], [[INT]]* getelementptr inbounds ([[CINT]], [[CIN… in test()
196 …// CHECK-NEXT: store volatile [[INT]] [[T]], [[INT]]* getelementptr inbounds ([[CINT]], [[CINT]]* … in test()
197 …// CHECK-NEXT: store volatile [[INT]] [[T]], [[INT]]* getelementptr inbounds ([[CINT]], [[CINT]]* … in test()
199 // CHECK-NEXT: load volatile in test()
200 // CHECK-NEXT: store volatile in test()
202 // CHECK-NEXT: load volatile in test()
208 // A use. We load all of a into a copy of a, then load i. gcc forgets to do in test()
213 // Test cases where we intentionally differ from gcc, due to suspected bugs in in test()
214 // gcc. in test()
216 // Not a use. gcc forgets to do the assignment. in test()
217 // CHECK-NEXT: call void @llvm.memcpy{{.*}}, i1 true in test()
218 // CHECK-NEXT: bitcast in test()
219 // CHECK-NEXT: call void @llvm.memcpy{{.*}}, i1 true in test()
222 // Not a use. gcc gets this wrong, it doesn't emit the copy! in test()
225 // Not a use. gcc got this wrong in 4.2 and omitted the side effects in test()
227 // CHECK-NEXT: load volatile in test()
228 // CHECK-NEXT: store volatile in test()
233 // CHECK-NEXT: load volatile in test()
234 // CHECK-NEXT: load volatile in test()
235 // CHECK-NEXT: store volatile in test()
236 // CHECK-NEXT: store volatile in test()
237 // CHECK-NEXT: sitofp in test()
239 // Not a use, bug? gcc treats this as not a use, that's probably a bug due to in test()
241 // CHECK-NEXT: load volatile in test()
242 // CHECK-NEXT: load volatile in test()
243 // CHECK-NEXT: store volatile in test()
244 // CHECK-NEXT: store volatile in test()
249 // CHECK-NEXT: load volatile in test()
250 // CHECK-NEXT: store volatile in test()
251 // CHECK-NEXT: sitofp in test()
253 // A use. gcc treats this as not a use, that's probably a bug due to tree in test()
255 // CHECK-NEXT: load volatile in test()
256 // CHECK-NEXT: store volatile in test()
260 // CHECK-NEXT: load volatile in test()
261 // CHECK-NEXT: store volatile in test()
262 // CHECK-NEXT: sub in test()
263 -(i=j); in test()
264 // A use. gcc treats this a not a use, that's probably a bug due to tree in test()
266 // CHECK-NEXT: load volatile in test()
267 // CHECK-NEXT: store volatile in test()
270 // A use. gcc treats this a not a use, that's probably a bug due to tree in test()
272 // CHECK-NEXT: load volatile in test()
273 // CHECK-NEXT: load volatile in test()
274 // CHECK-NEXT: store volatile in test()
275 // CHECK-NEXT: store volatile in test()
279 // CHECK-NEXT: load volatile in test()
280 // CHECK-NEXT: add in test()
283 // CHECK-NEXT: load volatile in test()
284 // CHECK-NEXT: store volatile in test()
285 // CHECK-NEXT: load volatile in test()
286 // CHECK-NEXT: add in test()
288 // A use. gcc treats this as not a use, that's probably a bug due to tree in test()
290 // CHECK-NEXT: load volatile in test()
291 // CHECK-NEXT: store volatile in test()
292 // CHECK-NEXT: add in test()
306 // CHECK-LABEL: define {{.*}}void @test1()
311 // CHECK-NEXT: ret void in test1()
320 // CHECK-NEXT: load volatile i32, i32* in test2()
321 // CHECK-NEXT: load volatile i32, i32* in test2()
322 // CHECK-NEXT: add i32 in test2()
323 // CHECK-NEXT: add i32 in test2()
324 // CHECK-NEXT: store volatile i32 in test2()
325 // CHECK-NEXT: ret i32 in test2()