1 // RUN: %clang_cc1 -w -debug-info-kind=line-tables-only -std=c++11 -fexceptions -fcxx-exceptions -S -mllvm -no-discriminators -emit-llvm %s -o - -triple %itanium_abi_triple | FileCheck %s
2 // RUN: %clang_cc1 -w -debug-info-kind=line-tables-only -std=c++11 -fexceptions -fcxx-exceptions -S -mllvm -no-discriminators -emit-llvm %s -o - -triple i686-linux-gnu | FileCheck %s
6 extern "C" __complex float complex_src();
7 extern "C" __complex float *complex_sink();
12 // CHECK: store {{.*}}, !dbg [[DBG_F1:!.*]]
25 // CHECK-LABEL: define
29 i // CHECK: store i32 {{.*}} !dbg [[DBG_FOO_VALUE:!.*]]
31 j // CHECK: store i32* {{.*}} !dbg [[DBG_FOO_REF:!.*]]
33 k // CHECK: store float {{.*}} !dbg [[DBG_FOO_COMPLEX:!.*]]
37 // CHECK-LABEL: define {{.*}}f2{{.*}}
39 // CHECK: store float {{.*}} !dbg [[DBG_F2:!.*]]
46 // CHECK-LABEL: define
48 // CHECK: store float {{.*}} !dbg [[DBG_F3:!.*]]
55 // CHECK-LABEL: define
58 auto x // CHECK: store {{.*}} !dbg [[DBG_F4:!.*]]
62 // CHECK-LABEL: define
65 auto x // CHECK: store float {{.*}} !dbg [[DBG_F5:!.*]]
69 struct agg { int i; };
72 // CHECK-LABEL: define
75 // CHECK: call void @llvm.memcpy{{.*}} !dbg [[DBG_F6:!.*]]
82 // CHECK-LABEL: define
87 int x = ( // CHECK: load {{.*}} !dbg [[DBG_F7:!.*]]
91 // CHECK-LABEL: define
96 int x = ( // CHECK: load {{.*}} !dbg [[DBG_F8:!.*]]
100 // CHECK-LABEL: define
105 auto x = ( // CHECK: getelementptr {{.*}} !dbg [[DBG_F9:!.*]]
109 inline void *operator new(decltype(sizeof(1)), void *p) noexcept { return p; }
111 // CHECK-LABEL: define
115 // CHECK: store {{.*}} !dbg [[DBG_F10_STORE:!.*]]
117 new (void_src()) int(src()));
120 // noexcept just to simplify the codegen a bit
121 void fn() noexcept(true);
125 // noexcept(false) to convolute the global dtor
126 ~bar() noexcept(false);
128 // global ctor cleanup
129 // CHECK-LABEL: define
130 // CHECK: invoke{{ }}
131 // CHECK: invoke{{ }}
132 // CHECK: to label {{.*}}, !dbg [[DBG_GLBL_CTOR_B:!.*]]
135 // CHECK-LABEL: define
137 // global dtor cleanup
138 // CHECK-LABEL: define
139 // CHECK: invoke{{ }}
140 // CHECK: invoke{{ }}
141 // CHECK: to label {{.*}}, !dbg [[DBG_GLBL_DTOR_B:!.*]]
147 // CHECK-LABEL: define
148 __complex double f11() {
150 // CHECK: store {{.*}} !dbg [[DBG_F11:!.*]]
155 // CHECK-LABEL: define
158 void f12_2(int = f12_1());
159 // CHECK: call {{.*}}{{(signext )?}}i32 {{.*}} !dbg [[DBG_F12:!.*]]
164 // CHECK-LABEL: define
166 // CHECK: call {{.*}} !dbg [[DBG_F13:!.*]]
167 #define F13_IMPL 1, src()
177 // CHECK-LABEL: define
179 // CHECK: call {{.*}}f14_impl{{.*}}, !dbg [[DBG_F14_CTOR_CALL:![0-9]*]]
186 f14_use::f14_use() = default;
188 // CHECK-LABEL: define
189 // CHECK-LABEL: define
193 // CHECK: getelementptr {{.*}}, !dbg [[DBG_F15:![0-9]*]]
198 // CHECK-LABEL: define
199 void f16(__complex float f) {
200 __complex float g = //
201 // CHECK: add {{.*}}, !dbg [[DBG_F16:![0-9]*]]
206 // CHECK-LABEL: define
209 // CHECK: getelementptr {{.*}}, !dbg [[DBG_F17:![0-9]*]]
214 // CHECK-LABEL: define
215 void f18(int a, int b) {
216 // CHECK: icmp {{.*}}, !dbg [[DBG_F18_1:![0-9]*]]
217 // CHECK: br {{.*}}, !dbg [[DBG_F18_2:![0-9]*]]
225 // CHECK-LABEL: define
226 void f19(int a, int b) {
227 // CHECK: icmp {{.*}}, !dbg [[DBG_F19_1:![0-9]*]]
228 // CHECK: br {{.*}}, !dbg [[DBG_F19_2:![0-9]*]]
236 // CHECK-LABEL: define
237 void f20(int a, int b, int c) {
238 // CHECK: icmp {{.*}}, !dbg [[DBG_F20_1:![0-9]*]]
239 // FIXME: Conditional operator's exprloc should be the '?' not the start of the
240 // expression, then this would go in the right place. (but adding getExprLoc to
241 // the ConditionalOperator breaks the ARC migration tool - need to investigate
243 // CHECK: br {{.*}}, !dbg [[DBG_F20_1]]
251 // CHECK-LABEL: define
253 void f21_b(int = f21_a());
255 // CHECK: call {{.*}}f21_b{{.*}}, !dbg [[DBG_F21:![0-9]*]]
260 // CHECK-LABEL: define
268 // CHECK: invoke {{.*}}src
269 // CHECK: call {{.*}}, !dbg [[DBG_F22:![0-9]*]]
270 // CHECK: call {{.*}}, !dbg [[DBG_F22]]
275 // CHECK-LABEL: define
279 void f23_b(f23_struct = f23_a());
281 // CHECK: call {{.*}}f23_a{{.*}}, !dbg [[DBG_F23:![0-9]*]]
286 // CHECK-LABEL: define
287 void f24_a(__complex float = complex_src());
289 // CHECK: call {{.*}}complex_src{{.*}}, !dbg [[DBG_F24:![0-9]*]]
294 // CHECK: [[DBG_F1]] = !DILocation(line: 100,
295 // CHECK: [[DBG_FOO_VALUE]] = !DILocation(line: 200,
296 // CHECK: [[DBG_FOO_REF]] = !DILocation(line: 202,
297 // CHECK: [[DBG_FOO_COMPLEX]] = !DILocation(line: 204,
298 // CHECK: [[DBG_F2]] = !DILocation(line: 300,
299 // CHECK: [[DBG_F3]] = !DILocation(line: 400,
300 // CHECK: [[DBG_F4]] = !DILocation(line: 500,
301 // CHECK: [[DBG_F5]] = !DILocation(line: 600,
302 // CHECK: [[DBG_F6]] = !DILocation(line: 700,
303 // CHECK: [[DBG_F7]] = !DILocation(line: 800,
304 // CHECK: [[DBG_F8]] = !DILocation(line: 900,
305 // CHECK: [[DBG_F9]] = !DILocation(line: 1000,
306 // CHECK: [[DBG_F10_STORE]] = !DILocation(line: 1100,
307 // CHECK: [[DBG_GLBL_CTOR_B]] = !DILocation(line: 1200,
308 // CHECK: [[DBG_GLBL_DTOR_B]] = !DILocation(line: 1200,
309 // CHECK: [[DBG_F11]] = !DILocation(line: 1300,
310 // CHECK: [[DBG_F12]] = !DILocation(line: 1400,
311 // CHECK: [[DBG_F13]] = !DILocation(line: 1500,
312 // CHECK: [[DBG_F14_CTOR_CALL]] = !DILocation(line: 1600,
313 // CHECK: [[DBG_F15]] = !DILocation(line: 1700,
314 // CHECK: [[DBG_F16]] = !DILocation(line: 1800,
315 // CHECK: [[DBG_F17]] = !DILocation(line: 1900,
316 // CHECK: [[DBG_F18_1]] = !DILocation(line: 2000,
317 // CHECK: [[DBG_F18_2]] = !DILocation(line: 2001,
318 // CHECK: [[DBG_F19_1]] = !DILocation(line: 2100,
319 // CHECK: [[DBG_F19_2]] = !DILocation(line: 2101,
320 // CHECK: [[DBG_F20_1]] = !DILocation(line: 2200,
321 // CHECK: [[DBG_F23]] = !DILocation(line: 2500,
322 // CHECK: [[DBG_F24]] = !DILocation(line: 2600,