Skip to content
This repository was archived by the owner on Nov 1, 2021. It is now read-only.

Commit 41deb1f

Browse files
committed
Make a few OpenMP tests "C++11 clean."
Reviewed by abataev (in D27794) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@290120 91177308-0d34-0410-b5e6-96231b3b80d8
1 parent 7b18234 commit 41deb1f

12 files changed

+244
-91
lines changed

test/CodeGenCXX/arm-swiftcall.cpp

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
// RUN: %clang_cc1 -triple armv7-apple-darwin9 -emit-llvm -o - %s -Wno-return-type-c-linkage | FileCheck %s
1+
// RUN: %clang_cc1 -triple armv7-apple-darwin9 -emit-llvm -o - %s -Wno-return-type-c-linkage -std=c++03 | FileCheck %s -check-prefixes=CHECK,CHECKv03
2+
// RUN: %clang_cc1 -triple armv7-apple-darwin9 -emit-llvm -o - %s -Wno-return-type-c-linkage -std=c++11 | FileCheck %s -check-prefixes=CHECK,CHECKv11
23

34
// This isn't really testing anything ARM-specific; it's just a convenient
45
// 32-bit platform.
@@ -48,7 +49,8 @@ typedef struct {
4849
TEST(struct_1);
4950
// CHECK-LABEL: define {{.*}} @return_struct_1()
5051
// CHECK: [[RET:%.*]] = alloca [[REC:%.*]], align 4
51-
// CHECK: @llvm.memset
52+
// CHECKv03: @llvm.memset
53+
// CHECKv11: @llvm.memcpy
5254
// CHECK: [[CAST_TMP:%.*]] = bitcast [[REC]]* [[RET]] to [[AGG:{ i32, \[2 x i8\], i8, \[1 x i8\], float, float }]]*
5355
// CHECK: [[T0:%.*]] = getelementptr inbounds [[AGG]], [[AGG]]* [[CAST_TMP]], i32 0, i32 0
5456
// CHECK: [[FIRST:%.*]] = load i32, i32* [[T0]], align 4

test/CodeGenCXX/destructors.cpp

+83-45
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
1-
// RUN: %clang_cc1 %s -triple x86_64-apple-darwin10 -emit-llvm -o - -mconstructor-aliases -fcxx-exceptions -fexceptions -O1 -disable-llvm-optzns > %t
1+
// RUN: %clang_cc1 %s -triple x86_64-apple-darwin10 -emit-llvm -o - -mconstructor-aliases -fcxx-exceptions -fexceptions -O1 -disable-llvm-optzns -std=c++03 > %t
22
// RUN: FileCheck --check-prefix=CHECK1 --input-file=%t %s
33
// RUN: FileCheck --check-prefix=CHECK2 --input-file=%t %s
44
// RUN: FileCheck --check-prefix=CHECK3 --input-file=%t %s
5-
// RUN: FileCheck --check-prefix=CHECK4 --input-file=%t %s
6-
// RUN: FileCheck --check-prefix=CHECK5 --input-file=%t %s
7-
// RUN: %clang_cc1 %s -triple x86_64-apple-darwin10 -emit-llvm -o - -fcxx-exceptions -fexceptions -O1 -disable-llvm-optzns -std=c++11 > %t2
8-
// RUN: FileCheck --check-prefix=CHECK6 --input-file=%t2 %s
5+
// RUN: FileCheck --check-prefixes=CHECK4,CHECK4v03 --input-file=%t %s
6+
// RUN: FileCheck --check-prefixes=CHECK5,CHECK5v03 --input-file=%t %s
7+
// RUN: %clang_cc1 %s -triple x86_64-apple-darwin10 -emit-llvm -o - -mconstructor-aliases -fcxx-exceptions -fexceptions -O1 -disable-llvm-optzns -std=c++11 > %t2
8+
// RUN: FileCheck --check-prefix=CHECK1 --input-file=%t2 %s
9+
// RUN: FileCheck --check-prefix=CHECK2v11 --input-file=%t2 %s
10+
// RUN: FileCheck --check-prefix=CHECK3 --input-file=%t2 %s
11+
// RUN: FileCheck --check-prefixes=CHECK4,CHECK4v11 --input-file=%t2 %s
12+
// RUN: FileCheck --check-prefixes=CHECK5,CHECK5v11 --input-file=%t2 %s
13+
// RUN: FileCheck --check-prefix=CHECK6 --input-file=%t2 %s
914
// REQUIRES: asserts
1015

1116
struct A {
@@ -98,6 +103,12 @@ namespace test0 {
98103
// CHECK2: invoke void @_ZN5test04BaseD2Ev
99104
// CHECK2: unwind label [[BASE_UNWIND:%[a-zA-Z0-9.]+]]
100105

106+
// In C++11, the destructors are often known not to throw.
107+
// CHECK2v11-LABEL: @_ZN5test01AD1Ev = alias {{.*}} @_ZN5test01AD2Ev
108+
// CHECK2v11-LABEL: define void @_ZN5test01AD2Ev(%"struct.test0::A"* %this) unnamed_addr
109+
// CHECK2v11: call void @_ZN5test06MemberD1Ev
110+
// CHECK2v11: call void @_ZN5test04BaseD2Ev
111+
101112
struct B : Base, virtual VBase {
102113
Member M;
103114
~B();
@@ -111,13 +122,22 @@ namespace test0 {
111122
// CHECK2: invoke void @_ZN5test04BaseD2Ev
112123
// CHECK2: unwind label [[BASE_UNWIND:%[a-zA-Z0-9.]+]]
113124

125+
// CHECK2v11-LABEL: define void @_ZN5test01BD2Ev(%"struct.test0::B"* %this, i8** %vtt) unnamed_addr
126+
// CHECK2v11: call void @_ZN5test06MemberD1Ev
127+
// CHECK2v11: call void @_ZN5test04BaseD2Ev
128+
114129
// CHECK2-LABEL: define void @_ZN5test01BD1Ev(%"struct.test0::B"* %this) unnamed_addr
115130
// CHECK2: invoke void @_ZN5test06MemberD1Ev
116131
// CHECK2: unwind label [[MEM_UNWIND:%[a-zA-Z0-9.]+]]
117132
// CHECK2: invoke void @_ZN5test04BaseD2Ev
118133
// CHECK2: unwind label [[BASE_UNWIND:%[a-zA-Z0-9.]+]]
119134
// CHECK2: invoke void @_ZN5test05VBaseD2Ev
120135
// CHECK2: unwind label [[VBASE_UNWIND:%[a-zA-Z0-9.]+]]
136+
137+
// CHECK2v11-LABEL: define void @_ZN5test01BD1Ev(%"struct.test0::B"* %this) unnamed_addr
138+
// CHECK2v11: call void @_ZN5test06MemberD1Ev
139+
// CHECK2v11: call void @_ZN5test04BaseD2Ev
140+
// CHECK2v11: call void @_ZN5test05VBaseD2Ev
121141
}
122142

123143
// Test base-class aliasing.
@@ -189,19 +209,22 @@ namespace test3 {
189209
}
190210

191211
// CHECK4-LABEL: define internal void @_ZN5test312_GLOBAL__N_11CD2Ev(%"struct.test3::(anonymous namespace)::C"* %this) unnamed_addr
192-
// CHECK4: invoke void @_ZN5test31BD2Ev(
212+
// CHECK4v03: invoke void @_ZN5test31BD2Ev(
213+
// CHECK4v11: call void @_ZN5test31BD2Ev(
193214
// CHECK4: call void @_ZN5test31AD2Ev(
194215
// CHECK4: ret void
195216

196217
// CHECK4-LABEL: define internal void @_ZN5test312_GLOBAL__N_11DD0Ev(%"struct.test3::(anonymous namespace)::D"* %this) unnamed_addr
197-
// CHECK4-SAME: personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
198-
// CHECK4: invoke void {{.*}} @_ZN5test312_GLOBAL__N_11CD2Ev
218+
// CHECK4v03-SAME: personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
219+
// CHECK4v03: invoke void {{.*}} @_ZN5test312_GLOBAL__N_11CD2Ev
220+
// CHECK4v11: call void {{.*}} @_ZN5test312_GLOBAL__N_11CD2Ev
199221
// CHECK4: call void @_ZdlPv({{.*}}) [[NUW:#[0-9]+]]
200222
// CHECK4: ret void
201-
// CHECK4: landingpad { i8*, i32 }
202-
// CHECK4-NEXT: cleanup
203-
// CHECK4: call void @_ZdlPv({{.*}}) [[NUW]]
204-
// CHECK4: resume { i8*, i32 }
223+
// CHECK4v03: landingpad { i8*, i32 }
224+
// CHECK4v03-NEXT: cleanup
225+
// CHECK4v03: call void @_ZdlPv({{.*}}) [[NUW]]
226+
// CHECK4v03: resume { i8*, i32 }
227+
// CHECK4v11-NOT: landingpad
205228

206229
// CHECK4-LABEL: define internal void @_ZThn8_N5test312_GLOBAL__N_11DD1Ev(
207230
// CHECK4: getelementptr inbounds i8, i8* {{.*}}, i64 -8
@@ -214,14 +237,15 @@ namespace test3 {
214237
// CHECK4: ret void
215238

216239
// CHECK4-LABEL: define internal void @_ZN5test312_GLOBAL__N_11CD0Ev(%"struct.test3::(anonymous namespace)::C"* %this) unnamed_addr
217-
// CHECK4-SAME: personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
218-
// CHECK4: invoke void @_ZN5test312_GLOBAL__N_11CD2Ev(
240+
// CHECK4v03-SAME: personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
241+
// CHECK4v03: invoke void @_ZN5test312_GLOBAL__N_11CD2Ev(
242+
// CHECK4v11: call void @_ZN5test312_GLOBAL__N_11CD2Ev(
219243
// CHECK4: call void @_ZdlPv({{.*}}) [[NUW]]
220244
// CHECK4: ret void
221-
// CHECK4: landingpad { i8*, i32 }
222-
// CHECK4-NEXT: cleanup
223-
// CHECK4: call void @_ZdlPv({{.*}}) [[NUW]]
224-
// CHECK4: resume { i8*, i32 }
245+
// CHECK4v03: landingpad { i8*, i32 }
246+
// CHECK4v03-NEXT: cleanup
247+
// CHECK4v03: call void @_ZdlPv({{.*}}) [[NUW]]
248+
// CHECK4v03: resume { i8*, i32 }
225249

226250
// CHECK4-LABEL: define internal void @_ZThn8_N5test312_GLOBAL__N_11CD1Ev(
227251
// CHECK4: getelementptr inbounds i8, i8* {{.*}}, i64 -8
@@ -282,28 +306,31 @@ namespace test5 {
282306

283307
// CHECK5-LABEL: define void @_ZN5test53fooEv()
284308
// CHECK5: [[ELEMS:%.*]] = alloca [5 x [[A:%.*]]], align
285-
// CHECK5-NEXT: [[EXN:%.*]] = alloca i8*
286-
// CHECK5-NEXT: [[SEL:%.*]] = alloca i32
309+
// CHECK5v03-NEXT: [[EXN:%.*]] = alloca i8*
310+
// CHECK5v03-NEXT: [[SEL:%.*]] = alloca i32
287311
// CHECK5-NEXT: [[PELEMS:%.*]] = bitcast [5 x [[A]]]* [[ELEMS]] to i8*
288312
// CHECK5-NEXT: call void @llvm.lifetime.start(i64 5, i8* [[PELEMS]])
289313
// CHECK5-NEXT: [[BEGIN:%.*]] = getelementptr inbounds [5 x [[A]]], [5 x [[A]]]* [[ELEMS]], i32 0, i32 0
290314
// CHECK5-NEXT: [[END:%.*]] = getelementptr inbounds [[A]], [[A]]* [[BEGIN]], i64 5
291315
// CHECK5-NEXT: br label
292316
// CHECK5: [[POST:%.*]] = phi [[A]]* [ [[END]], {{%.*}} ], [ [[ELT:%.*]], {{%.*}} ]
293317
// CHECK5-NEXT: [[ELT]] = getelementptr inbounds [[A]], [[A]]* [[POST]], i64 -1
294-
// CHECK5-NEXT: invoke void @_ZN5test51AD1Ev([[A]]* [[ELT]])
318+
// CHECK5v03-NEXT: invoke void @_ZN5test51AD1Ev([[A]]* [[ELT]])
319+
// CHECK5v11-NEXT: call void @_ZN5test51AD1Ev([[A]]* [[ELT]])
295320
// CHECK5: [[T0:%.*]] = icmp eq [[A]]* [[ELT]], [[BEGIN]]
296321
// CHECK5-NEXT: br i1 [[T0]],
297322
// CHECK5: call void @llvm.lifetime.end
298323
// CHECK5-NEXT: ret void
299324
// lpad
300-
// CHECK5: [[EMPTY:%.*]] = icmp eq [[A]]* [[BEGIN]], [[ELT]]
301-
// CHECK5-NEXT: br i1 [[EMPTY]]
302-
// CHECK5: [[AFTER:%.*]] = phi [[A]]* [ [[ELT]], {{%.*}} ], [ [[CUR:%.*]], {{%.*}} ]
303-
// CHECK5-NEXT: [[CUR:%.*]] = getelementptr inbounds [[A]], [[A]]* [[AFTER]], i64 -1
304-
// CHECK5-NEXT: invoke void @_ZN5test51AD1Ev([[A]]* [[CUR]])
305-
// CHECK5: [[DONE:%.*]] = icmp eq [[A]]* [[CUR]], [[BEGIN]]
306-
// CHECK5-NEXT: br i1 [[DONE]],
325+
// CHECK5v03: [[EMPTY:%.*]] = icmp eq [[A]]* [[BEGIN]], [[ELT]]
326+
// CHECK5v03-NEXT: br i1 [[EMPTY]]
327+
// CHECK5v03: [[AFTER:%.*]] = phi [[A]]* [ [[ELT]], {{%.*}} ], [ [[CUR:%.*]], {{%.*}} ]
328+
// CHECK5v03-NEXT: [[CUR:%.*]] = getelementptr inbounds [[A]], [[A]]* [[AFTER]], i64 -1
329+
// CHECK5v03-NEXT: invoke void @_ZN5test51AD1Ev([[A]]* [[CUR]])
330+
// CHECK5v03: [[DONE:%.*]] = icmp eq [[A]]* [[CUR]], [[BEGIN]]
331+
// CHECK5v03-NEXT: br i1 [[DONE]],
332+
// CHECK5v11-NOT: landingpad
333+
// CHECK5v11: }
307334
void foo() {
308335
A elems[5];
309336
}
@@ -334,25 +361,34 @@ namespace test6 {
334361
C::~C() { opaque(); }
335362
// CHECK5-LABEL: define void @_ZN5test61CD2Ev(%"struct.test6::C"* %this, i8** %vtt) unnamed_addr
336363
// CHECK5: invoke void @_ZN5test66opaqueEv
337-
// CHECK5: invoke void @_ZN5test61AD1Ev
338-
// CHECK5: invoke void @_ZN5test61AD1Ev
339-
// CHECK5: invoke void @_ZN5test61AD1Ev
340-
// CHECK5: invoke void @_ZN5test61BILj1EED2Ev
364+
// CHECK5v03: invoke void @_ZN5test61AD1Ev
365+
// CHECK5v03: invoke void @_ZN5test61AD1Ev
366+
// CHECK5v03: invoke void @_ZN5test61AD1Ev
367+
// CHECK5v03: invoke void @_ZN5test61BILj1EED2Ev
368+
// CHECK5v11: call void @_ZN5test61AD1Ev
369+
// CHECK5v11: call void @_ZN5test61AD1Ev
370+
// CHECK5v11: call void @_ZN5test61AD1Ev
371+
// CHECK5v11: call void @_ZN5test61BILj1EED2Ev
341372
// CHECK5: call void @_ZN5test61BILj0EED2Ev
342373
// CHECK5: ret void
343-
// CHECK5: invoke void @_ZN5test61AD1Ev
344-
// CHECK5: invoke void @_ZN5test61AD1Ev
345-
// CHECK5: invoke void @_ZN5test61AD1Ev
346-
// CHECK5: invoke void @_ZN5test61BILj1EED2Ev
347-
// CHECK5: invoke void @_ZN5test61BILj0EED2Ev
374+
// CHECK5v03: invoke void @_ZN5test61AD1Ev
375+
// CHECK5v03: invoke void @_ZN5test61AD1Ev
376+
// CHECK5v03: invoke void @_ZN5test61AD1Ev
377+
// CHECK5v03: invoke void @_ZN5test61BILj1EED2Ev
378+
// CHECK5v03: invoke void @_ZN5test61BILj0EED2Ev
348379

349380
// CHECK5-LABEL: define void @_ZN5test61CD1Ev(%"struct.test6::C"* %this) unnamed_addr
350-
// CHECK5: invoke void @_ZN5test61CD2Ev
351-
// CHECK5: invoke void @_ZN5test61BILj3EED2Ev
352-
// CHECK5: call void @_ZN5test61BILj2EED2Ev
353-
// CHECK5: ret void
354-
// CHECK5: invoke void @_ZN5test61BILj3EED2Ev
355-
// CHECK5: invoke void @_ZN5test61BILj2EED2Ev
381+
// CHECK5v03: invoke void @_ZN5test61CD2Ev
382+
// CHECK5v03: invoke void @_ZN5test61BILj3EED2Ev
383+
// CHECK5v03: call void @_ZN5test61BILj2EED2Ev
384+
// CHECK5v03: ret void
385+
// CHECK5v03: invoke void @_ZN5test61BILj3EED2Ev
386+
// CHECK5v03: invoke void @_ZN5test61BILj2EED2Ev
387+
388+
// CHECK5v11: call void @_ZN5test61CD2Ev
389+
// CHECK5v11: call void @_ZN5test61BILj3EED2Ev
390+
// CHECK5v11: call void @_ZN5test61BILj2EED2Ev
391+
// CHECK5v11: ret void
356392
}
357393

358394
// PR 9197
@@ -369,7 +405,8 @@ namespace test7 {
369405

370406
// Verify that this doesn't get emitted as an alias
371407
// CHECK5-LABEL: define void @_ZN5test71BD2Ev(
372-
// CHECK5: invoke void @_ZN5test71DD1Ev(
408+
// CHECK5v03: invoke void @_ZN5test71DD1Ev(
409+
// CHECK5v11: call void @_ZN5test71DD1Ev(
373410
// CHECK5: call void @_ZN5test71AD2Ev(
374411
B::~B() {}
375412
}
@@ -394,7 +431,8 @@ namespace test8 {
394431
// CHECK5: call void @_ZN5test81AC1Ev([[A]]* [[X]])
395432
// CHECK5-NEXT: br label
396433
// CHECK5: invoke void @_ZN5test81AC1Ev([[A]]* [[Y]])
397-
// CHECK5: invoke void @_ZN5test81AD1Ev([[A]]* [[Y]])
434+
// CHECK5v03: invoke void @_ZN5test81AD1Ev([[A]]* [[Y]])
435+
// CHECK5v11: call void @_ZN5test81AD1Ev([[A]]* [[Y]])
398436
// CHECK5-NOT: switch
399437
// CHECK5: invoke void @_ZN5test83dieEv()
400438
// CHECK5: unreachable

test/CodeGenCXX/global-init.cpp

+10-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
1-
// RUN: %clang_cc1 -triple=x86_64-apple-darwin10 -emit-llvm -fexceptions %s -o - |FileCheck %s
2-
// RUN: %clang_cc1 -triple=x86_64-apple-darwin10 -emit-llvm %s -o - |FileCheck -check-prefix CHECK-NOEXC %s
1+
// RUN: %clang_cc1 -triple=x86_64-apple-darwin10 -emit-llvm -fexceptions %s -o - -std=c++03 | FileCheck %s -check-prefixes=CHECK,CHECKv03
2+
// RUN: %clang_cc1 -triple=x86_64-apple-darwin10 -emit-llvm -fexceptions %s -o - -std=c++11 | FileCheck %s -check-prefixes=CHECK,CHECKv11
3+
// RUN: %clang_cc1 -triple=x86_64-apple-darwin10 -emit-llvm %s -o - -std=c++03 | FileCheck -check-prefix CHECK-NOEXC %s
4+
// RUN: %clang_cc1 -triple=x86_64-apple-darwin10 -emit-llvm %s -o - -std=c++11 | FileCheck -check-prefix CHECK-NOEXC %s
35
// RUN: %clang_cc1 -triple=x86_64-apple-darwin10 -emit-llvm \
4-
// RUN: -momit-leaf-frame-pointer -mdisable-fp-elim %s -o - \
6+
// RUN: -momit-leaf-frame-pointer -mdisable-fp-elim %s -o - -std=c++03 \
7+
// RUN: | FileCheck -check-prefix CHECK-FP %s
8+
// RUN: %clang_cc1 -triple=x86_64-apple-darwin10 -emit-llvm \
9+
// RUN: -momit-leaf-frame-pointer -mdisable-fp-elim %s -o - -std=c++11 \
510
// RUN: | FileCheck -check-prefix CHECK-FP %s
611

712
struct A {
@@ -170,7 +175,8 @@ namespace test7 {
170175
const B &b2 = B();
171176
const int b3 = B().n;
172177

173-
// CHECK-NOT: @_ZN5test7L2c1E
178+
// CHECKv03-NOT: @_ZN5test7L2c1E
179+
// CHECKv11: @_ZN5test7L2c1E
174180
// CHECK: @_ZN5test7L2c2E
175181
// CHECK-NOT: @_ZN5test7L2c3E
176182
// CHECK: @_ZN5test7L2c4E

test/CodeGenCXX/nrvo.cpp

+14-10
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm -O1 -o - %s | FileCheck %s
2-
// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm -O1 -fcxx-exceptions -fexceptions -o - %s | FileCheck --check-prefix=CHECK-EH %s
2+
// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm -O1 -fcxx-exceptions -fexceptions -std=c++03 -o - %s | FileCheck --check-prefixes=CHECK-EH,CHECK-EH-03 %s
3+
// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm -O1 -fcxx-exceptions -fexceptions -std=c++11 -o - %s | FileCheck --check-prefixes=CHECK-EH,CHECK-EH-11 %s
34

45
// Test code generation for the named return value optimization.
56
class X {
@@ -91,16 +92,18 @@ X test2(bool B) {
9192
// -> %eh.cleanup
9293

9394
// %lpad1: landing pad for return copy ctors, EH cleanup for 'y'
94-
// CHECK-EH: invoke {{.*}} @_ZN1XD1Ev
95+
// CHECK-EH-03: invoke {{.*}} @_ZN1XD1Ev
9596
// -> %eh.cleanup, %terminate.lpad
97+
// CHECK-EH-11: call {{.*}} @_ZN1XD1Ev
9698

9799
// %if.end: returning 'y'
98100
// CHECK-EH: invoke {{.*}} @_ZN1XC1ERKS_
99101
// -> %cleanup, %lpad1
100102

101103
// %cleanup: normal cleanup for 'y'
102-
// CHECK-EH: invoke {{.*}} @_ZN1XD1Ev
104+
// CHECK-EH-03: invoke {{.*}} @_ZN1XD1Ev
103105
// -> %invoke.cont11, %lpad
106+
// CHECK-EH-11: call {{.*}} @_ZN1XD1Ev
104107

105108
// %invoke.cont11: normal cleanup for 'x'
106109
// CHECK-EH: call void @llvm.lifetime.end
@@ -109,19 +112,20 @@ X test2(bool B) {
109112
// CHECK-EH-NEXT: ret void
110113

111114
// %eh.cleanup: EH cleanup for 'x'
112-
// CHECK-EH: invoke {{.*}} @_ZN1XD1Ev
115+
// CHECK-EH-03: invoke {{.*}} @_ZN1XD1Ev
113116
// -> %invoke.cont17, %terminate.lpad
117+
// CHECK-EH-11: call {{.*}} @_ZN1XD1Ev
114118

115119
// %invoke.cont17: rethrow block for %eh.cleanup.
116120
// This really should be elsewhere in the function.
117121
// CHECK-EH: resume { i8*, i32 }
118122

119123
// %terminate.lpad: terminate landing pad.
120-
// CHECK-EH: [[T0:%.*]] = landingpad { i8*, i32 }
121-
// CHECK-EH-NEXT: catch i8* null
122-
// CHECK-EH-NEXT: [[T1:%.*]] = extractvalue { i8*, i32 } [[T0]], 0
123-
// CHECK-EH-NEXT: call void @__clang_call_terminate(i8* [[T1]]) [[NR_NUW:#[0-9]+]]
124-
// CHECK-EH-NEXT: unreachable
124+
// CHECK-EH-03: [[T0:%.*]] = landingpad { i8*, i32 }
125+
// CHECK-EH-03-NEXT: catch i8* null
126+
// CHECK-EH-03-NEXT: [[T1:%.*]] = extractvalue { i8*, i32 } [[T0]], 0
127+
// CHECK-EH-03-NEXT: call void @__clang_call_terminate(i8* [[T1]]) [[NR_NUW:#[0-9]+]]
128+
// CHECK-EH-03-NEXT: unreachable
125129

126130
}
127131

@@ -217,4 +221,4 @@ Y<int> test9() {
217221
// CHECK-LABEL: define linkonce_odr void @_ZN1YIiE1fEv
218222
// CHECK: tail call {{.*}} @_ZN1YIiEC1Ev
219223

220-
// CHECK-EH: attributes [[NR_NUW]] = { noreturn nounwind }
224+
// CHECK-EH-03: attributes [[NR_NUW]] = { noreturn nounwind }

0 commit comments

Comments
 (0)