Looks like this broke building libc++ with a just built clang on OS X: ld: illegal text-relocation to '___gxx_personality_v0' in /usr/lib/libc++abi.dylib from '__ZNSt3__112__rs_defaultC1ERKS0_' in projects/libcxx/lib/CMakeFiles/cxx.dir/__/src/algorithm.cpp.o for architecture x86_64
When linking libc++.1.0.dylib I will try to create a reduced testcase. On 17 June 2015 at 16:53, David Majnemer <david.majne...@gmail.com> wrote: > Author: majnemer > Date: Wed Jun 17 15:53:19 2015 > New Revision: 239941 > > URL: http://llvm.org/viewvc/llvm-project?rev=239941&view=rev > Log: > Update clang to take into account the changes to personality fns > > Modified: > cfe/trunk/lib/CodeGen/CGException.cpp > cfe/trunk/test/CXX/except/except.spec/p9-dynamic.cpp > cfe/trunk/test/CXX/except/except.spec/p9-noexcept.cpp > cfe/trunk/test/CodeGen/exceptions-seh.c > cfe/trunk/test/CodeGen/exceptions.c > cfe/trunk/test/CodeGenCXX/arm.cpp > cfe/trunk/test/CodeGenCXX/cxx11-exception-spec.cpp > cfe/trunk/test/CodeGenCXX/destructors.cpp > cfe/trunk/test/CodeGenCXX/dynamic-cast.cpp > cfe/trunk/test/CodeGenCXX/eh.cpp > cfe/trunk/test/CodeGenCXX/exceptions-seh.cpp > cfe/trunk/test/CodeGenCXX/microsoft-abi-thread-safe-statics.cpp > cfe/trunk/test/CodeGenCXX/mingw-w64-seh-exceptions.cpp > cfe/trunk/test/CodeGenCXX/nrvo.cpp > cfe/trunk/test/CodeGenCXX/partial-destruction.cpp > cfe/trunk/test/CodeGenCXX/threadsafe-statics-exceptions.cpp > cfe/trunk/test/CodeGenCXX/typeid.cpp > cfe/trunk/test/CodeGenCXX/windows-itanium-exceptions.cpp > cfe/trunk/test/CodeGenObjC/autorelease.m > cfe/trunk/test/CodeGenObjC/blocks-2.m > cfe/trunk/test/CodeGenObjC/gnu-exceptions.m > cfe/trunk/test/CodeGenObjC/terminate.m > cfe/trunk/test/CodeGenObjCXX/catch-id-type.mm > cfe/trunk/test/CodeGenObjCXX/exceptions.mm > > Modified: cfe/trunk/lib/CodeGen/CGException.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGException.cpp?rev=239941&r1=239940&r2=239941&view=diff > ============================================================================== > --- cfe/trunk/lib/CodeGen/CGException.cpp (original) > +++ cfe/trunk/lib/CodeGen/CGException.cpp Wed Jun 17 15:53:19 2015 > @@ -698,13 +698,15 @@ llvm::BasicBlock *CodeGenFunction::EmitL > > const EHPersonality &personality = EHPersonality::get(*this); > > + if (!CurFn->hasPersonalityFn()) > + CurFn->setPersonalityFn(getOpaquePersonalityFn(CGM, personality)); > + > // Create and configure the landing pad. > llvm::BasicBlock *lpad = createBasicBlock("lpad"); > EmitBlock(lpad); > > - llvm::LandingPadInst *LPadInst = > - Builder.CreateLandingPad(llvm::StructType::get(Int8PtrTy, Int32Ty, > nullptr), > - getOpaquePersonalityFn(CGM, personality), 0); > + llvm::LandingPadInst *LPadInst = Builder.CreateLandingPad( > + llvm::StructType::get(Int8PtrTy, Int32Ty, nullptr), 0); > > llvm::Value *LPadExn = Builder.CreateExtractValue(LPadInst, 0); > Builder.CreateStore(LPadExn, getExceptionSlot()); > @@ -1193,9 +1195,12 @@ llvm::BasicBlock *CodeGenFunction::getTe > > // Tell the backend that this is a landing pad. > const EHPersonality &Personality = EHPersonality::get(*this); > - llvm::LandingPadInst *LPadInst = > - Builder.CreateLandingPad(llvm::StructType::get(Int8PtrTy, Int32Ty, > nullptr), > - getOpaquePersonalityFn(CGM, Personality), 0); > + > + if (!CurFn->hasPersonalityFn()) > + CurFn->setPersonalityFn(getOpaquePersonalityFn(CGM, Personality)); > + > + llvm::LandingPadInst *LPadInst = Builder.CreateLandingPad( > + llvm::StructType::get(Int8PtrTy, Int32Ty, nullptr), 0); > LPadInst->addClause(getCatchAllValue(*this)); > > llvm::Value *Exn = 0; > > Modified: cfe/trunk/test/CXX/except/except.spec/p9-dynamic.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CXX/except/except.spec/p9-dynamic.cpp?rev=239941&r1=239940&r2=239941&view=diff > ============================================================================== > --- cfe/trunk/test/CXX/except/except.spec/p9-dynamic.cpp (original) > +++ cfe/trunk/test/CXX/except/except.spec/p9-dynamic.cpp Wed Jun 17 15:53:19 > 2015 > @@ -7,6 +7,6 @@ void target() throw(int) > // CHECK: invoke void @_Z8externalv() > external(); > } > -// CHECK: landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* > @__gxx_personality_v0 to i8*) > +// CHECK: landingpad { i8*, i32 } > // CHECK-NEXT: filter [1 x i8*] [i8* bitcast (i8** @_ZTIi to i8*)] > // CHECK: call void @__cxa_call_unexpected > > Modified: cfe/trunk/test/CXX/except/except.spec/p9-noexcept.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CXX/except/except.spec/p9-noexcept.cpp?rev=239941&r1=239940&r2=239941&view=diff > ============================================================================== > --- cfe/trunk/test/CXX/except/except.spec/p9-noexcept.cpp (original) > +++ cfe/trunk/test/CXX/except/except.spec/p9-noexcept.cpp Wed Jun 17 15:53:19 > 2015 > @@ -7,7 +7,7 @@ void target() noexcept > // CHECK: invoke void @_Z8externalv() > external(); > } > -// CHECK: [[T0:%.*]] = landingpad { i8*, i32 } personality i8* bitcast > (i32 (...)* @__gxx_personality_v0 to i8*) > +// CHECK: [[T0:%.*]] = landingpad { i8*, i32 } > // CHECK-NEXT: catch i8* null > // CHECK-NEXT: [[T1:%.*]] = extractvalue { i8*, i32 } [[T0]], 0 > // CHECK-NEXT: call void @__clang_call_terminate(i8* [[T1]]) > [[NR_NUW:#[0-9]+]] > > Modified: cfe/trunk/test/CodeGen/exceptions-seh.c > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/exceptions-seh.c?rev=239941&r1=239940&r2=239941&view=diff > ============================================================================== > --- cfe/trunk/test/CodeGen/exceptions-seh.c (original) > +++ cfe/trunk/test/CodeGen/exceptions-seh.c Wed Jun 17 15:53:19 2015 > @@ -19,12 +19,12 @@ int safe_div(int numerator, int denomina > *res = myres; > return success; > } > -// CHECK-LABEL: define i32 @safe_div(i32 %numerator, i32 %denominator, i32* > %res) > +// CHECK-LABEL: define i32 @safe_div(i32 %numerator, i32 %denominator, i32* > %res) {{.*}} personality i8* bitcast (i32 (...)* @__C_specific_handler to i8*) > // CHECK: invoke void @try_body(i32 %{{.*}}, i32 %{{.*}}, i32* %{{.*}}) > #[[NOINLINE:[0-9]+]] > // CHECK: to label %{{.*}} unwind label %[[lpad:[^ ]*]] > // > // CHECK: [[lpad]] > -// CHECK: landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* > @__C_specific_handler to i8*) > +// CHECK: landingpad { i8*, i32 } > // CHECK-NEXT: catch i8* null > // CHECK-NOT: br i1 > // CHECK: br label %[[except:[^ ]*]] > @@ -46,7 +46,7 @@ int filter_expr_capture(void) { > return r; > } > > -// CHECK-LABEL: define i32 @filter_expr_capture() > +// CHECK-LABEL: define i32 @filter_expr_capture() {{.*}} personality i8* > bitcast (i32 (...)* @__C_specific_handler to i8*) > // CHECK: call void (...) @llvm.frameescape(i32* %[[r:[^ ,]*]]) > // CHECK: store i32 42, i32* %[[r]] > // CHECK: invoke void @j() #[[NOINLINE]] > @@ -77,7 +77,7 @@ int nested_try(void) { > } > return r; > } > -// CHECK-LABEL: define i32 @nested_try() > +// CHECK-LABEL: define i32 @nested_try() {{.*}} personality i8* bitcast (i32 > (...)* @__C_specific_handler to i8*) > // CHECK: store i32 42, i32* %[[r:[^ ,]*]] > // CHECK: invoke void @j() #[[NOINLINE]] > // CHECK: to label %[[cont:[^ ]*]] unwind label %[[lpad:[^ ]*]] > @@ -87,7 +87,7 @@ int nested_try(void) { > // CHECK: br label %[[inner_try_cont:[^ ]*]] > // > // CHECK: [[lpad]] > -// CHECK: landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* > @__C_specific_handler to i8*) > +// CHECK: landingpad { i8*, i32 } > // CHECK: catch i8* bitcast (i32 (i8*, i8*)* @"\01?filt$1@0@nested_try@@" to > i8*) > // CHECK: catch i8* bitcast (i32 (i8*, i8*)* @"\01?filt$0@0@nested_try@@" to > i8*) > // CHECK: store i8* %{{.*}}, i8** %[[ehptr_slot:[^ ]*]] > @@ -125,7 +125,7 @@ void basic_finally(void) { > --g; > } > } > -// CHECK-LABEL: define void @basic_finally() > +// CHECK-LABEL: define void @basic_finally() {{.*}} personality i8* bitcast > (i32 (...)* @__C_specific_handler to i8*) > // CHECK: load i32, i32* @g > // CHECK: add i32 %{{.*}}, 1 > // CHECK: store i32 %{{.*}}, i32* @g > @@ -139,7 +139,7 @@ void basic_finally(void) { > // CHECK: ret void > // > // CHECK: [[lpad]] > -// CHECK: landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* > @__C_specific_handler to i8*) > +// CHECK: landingpad { i8*, i32 } > // CHECK-NEXT: cleanup > // CHECK: %[[fp:[^ ]*]] = call i8* @llvm.frameaddress(i32 0) > // CHECK: call void @"\01?fin$0@0@basic_finally@@"(i8 1, i8* %[[fp]]) > > Modified: cfe/trunk/test/CodeGen/exceptions.c > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/exceptions.c?rev=239941&r1=239940&r2=239941&view=diff > ============================================================================== > --- cfe/trunk/test/CodeGen/exceptions.c (original) > +++ cfe/trunk/test/CodeGen/exceptions.c Wed Jun 17 15:53:19 2015 > @@ -5,8 +5,8 @@ > void test1() { > extern void test1_helper(void (^)(int)); > > - // CHECK-LABEL: define void @test1() > - // CHECK-ARM-LABEL: define arm_aapcscc void @test1() > + // CHECK-LABEL: define void @test1() {{.*}} personality i8* bitcast > (i32 (...)* @__gcc_personality_v0 to i8*) > + // CHECK-ARM-LABEL: define arm_aapcscc void @test1() {{.*}} personality > i8* bitcast (i32 (...)* @__gcc_personality_sj0 to i8*) > > __block int x = 10; > > @@ -14,9 +14,9 @@ void test1() { > // CHECK-ARM: invoke arm_aapcscc void @test1_helper( > test1_helper(^(int v) { x = v; }); > > - // CHECK: landingpad { i8*, i32 } personality i8* bitcast (i32 > (...)* @__gcc_personality_v0 to i8*) > + // CHECK: landingpad { i8*, i32 } > // CHECK-NEXT: cleanup > - // CHECK-ARM: landingpad { i8*, i32 } personality i8* bitcast (i32 > (...)* @__gcc_personality_sj0 to i8*) > + // CHECK-ARM: landingpad { i8*, i32 } > // CHECK-ARM-NEXT: cleanup > } > > > Modified: cfe/trunk/test/CodeGenCXX/arm.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/arm.cpp?rev=239941&r1=239940&r2=239941&view=diff > ============================================================================== > --- cfe/trunk/test/CodeGenCXX/arm.cpp (original) > +++ cfe/trunk/test/CodeGenCXX/arm.cpp Wed Jun 17 15:53:19 2015 > @@ -291,7 +291,7 @@ namespace test7 { > > // Static and guard tested at top of file > > - // CHECK-LABEL: define void @_ZN5test74testEv() > + // CHECK-LABEL: define void @_ZN5test74testEv() {{.*}} personality i8* > bitcast (i32 (...)* @__gxx_personality_v0 to i8*) > void test() { > // CHECK: [[T0:%.*]] = load atomic i8, i8* bitcast (i32* > @_ZGVZN5test74testEvE1x to i8*) acquire, align 1 > // CHECK-NEXT: [[T1:%.*]] = and i8 [[T0]], 1 > @@ -311,7 +311,7 @@ namespace test7 { > // CHECK: ret void > static int x = foo(); > > - // CHECK: landingpad { i8*, i32 } personality i8* bitcast (i32 > (...)* @__gxx_personality_v0 to i8*) > + // CHECK: landingpad { i8*, i32 } > // CHECK-NEXT: cleanup > // CHECK: call void @__cxa_guard_abort(i32* @_ZGVZN5test74testEvE1x) > // CHECK: resume { i8*, i32 } > @@ -326,7 +326,7 @@ namespace test8 { > > // Static and guard tested at top of file > > - // CHECK-LABEL: define void @_ZN5test84testEv() > + // CHECK-LABEL: define void @_ZN5test84testEv() {{.*}} personality i8* > bitcast (i32 (...)* @__gxx_personality_v0 to i8*) > void test() { > // CHECK: [[T0:%.*]] = load atomic i8, i8* bitcast (i32* > @_ZGVZN5test84testEvE1x to i8*) acquire, align 1 > // CHECK-NEXT: [[T1:%.*]] = and i8 [[T0]], 1 > @@ -351,7 +351,7 @@ namespace test8 { > // CHECK: ret void > static A x; > > - // CHECK: landingpad { i8*, i32 } personality i8* bitcast (i32 > (...)* @__gxx_personality_v0 to i8*) > + // CHECK: landingpad { i8*, i32 } > // CHECK-NEXT: cleanup > // CHECK: call void @__cxa_guard_abort(i32* @_ZGVZN5test84testEvE1x) > // CHECK: resume { i8*, i32 } > > Modified: cfe/trunk/test/CodeGenCXX/cxx11-exception-spec.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/cxx11-exception-spec.cpp?rev=239941&r1=239940&r2=239941&view=diff > ============================================================================== > --- cfe/trunk/test/CodeGenCXX/cxx11-exception-spec.cpp (original) > +++ cfe/trunk/test/CodeGenCXX/cxx11-exception-spec.cpp Wed Jun 17 15:53:19 > 2015 > @@ -13,7 +13,7 @@ template<typename T> struct S { > > // CHECK: define {{.*}} @_Z1fIsEvv() [[NONE:#[0-9]+]] { > template<> void f<short>() { h(); } > -// CHECK: define {{.*}} @_Z1fIA2_sEvv() [[NUW:#[0-9]+]] { > +// CHECK: define {{.*}} @_Z1fIA2_sEvv() [[NUW:#[0-9]+]] personality i8* > bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { > template<> void f<short[2]>() noexcept { h(); } > > // CHECK: define {{.*}} @_ZN1SIsE1fEv() > @@ -24,7 +24,7 @@ template<> void S<short[2]>::f() noexcep > > // CHECK: define {{.*}} @_Z1fIDsEvv() [[NONE]] comdat { > template void f<char16_t>(); > -// CHECK: define {{.*}} @_Z1fIA2_DsEvv() [[NUW]] comdat { > +// CHECK: define {{.*}} @_Z1fIA2_DsEvv() [[NUW]] comdat personality i8* > bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { > template void f<char16_t[2]>(); > > // CHECK: define {{.*}} @_ZN1SIDsE1fEv() > @@ -34,7 +34,7 @@ template void S<char16_t>::f(); > template void S<char16_t[2]>::f(); > > void h() { > - // CHECK: define {{.*}} @_Z1fIiEvv() [[NUW]] comdat { > + // CHECK: define {{.*}} @_Z1fIiEvv() [[NUW]] comdat personality i8* > bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { > f<int>(); > // CHECK: define {{.*}} @_Z1fIA2_iEvv() [[NONE]] comdat { > f<int[2]>(); > @@ -45,7 +45,7 @@ void h() { > // CHECK-NOT: [[NUW]] > S<int[2]>::f(); > > - // CHECK: define {{.*}} @_Z1fIfEvv() [[NUW]] comdat { > + // CHECK: define {{.*}} @_Z1fIfEvv() [[NUW]] comdat personality i8* > bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { > void (*f1)() = &f<float>; > // CHECK: define {{.*}} @_Z1fIdEvv() [[NONE]] comdat { > void (*f2)() = &f<double>; > @@ -56,7 +56,7 @@ void h() { > // CHECK-NOT: [[NUW]] > void (*f4)() = &S<double>::f; > > - // CHECK: define {{.*}} @_Z1fIA4_cEvv() [[NUW]] comdat { > + // CHECK: define {{.*}} @_Z1fIA4_cEvv() [[NUW]] comdat personality i8* > bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { > (void)&f<char[4]>; > // CHECK: define {{.*}} @_Z1fIcEvv() [[NONE]] comdat { > (void)&f<char>; > > Modified: cfe/trunk/test/CodeGenCXX/destructors.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/destructors.cpp?rev=239941&r1=239940&r2=239941&view=diff > ============================================================================== > --- cfe/trunk/test/CodeGenCXX/destructors.cpp (original) > +++ cfe/trunk/test/CodeGenCXX/destructors.cpp Wed Jun 17 15:53:19 2015 > @@ -191,10 +191,11 @@ namespace test3 { > // CHECK4: ret void > > // CHECK4-LABEL: define internal void > @_ZN5test312_GLOBAL__N_11DD0Ev(%"struct.test3::(anonymous namespace)::D"* > %this) unnamed_addr > + // CHECK4-SAME: personality i8* bitcast (i32 (...)* @__gxx_personality_v0 > to i8*) > // CHECK4: invoke void {{.*}} @_ZN5test312_GLOBAL__N_11CD2Ev > // CHECK4: call void @_ZdlPv({{.*}}) [[NUW:#[0-9]+]] > // CHECK4: ret void > - // CHECK4: landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* > @__gxx_personality_v0 to i8*) > + // CHECK4: landingpad { i8*, i32 } > // CHECK4-NEXT: cleanup > // CHECK4: call void @_ZdlPv({{.*}}) [[NUW]] > // CHECK4: resume { i8*, i32 } > @@ -210,10 +211,11 @@ namespace test3 { > // CHECK4: ret void > > // CHECK4-LABEL: define internal void > @_ZN5test312_GLOBAL__N_11CD0Ev(%"struct.test3::(anonymous namespace)::C"* > %this) unnamed_addr > + // CHECK4-SAME: personality i8* bitcast (i32 (...)* @__gxx_personality_v0 > to i8*) > // CHECK4: invoke void @_ZN5test312_GLOBAL__N_11CD2Ev( > // CHECK4: call void @_ZdlPv({{.*}}) [[NUW]] > // CHECK4: ret void > - // CHECK4: landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* > @__gxx_personality_v0 to i8*) > + // CHECK4: landingpad { i8*, i32 } > // CHECK4-NEXT: cleanup > // CHECK4: call void @_ZdlPv({{.*}}) [[NUW]] > // CHECK4: resume { i8*, i32 } > > Modified: cfe/trunk/test/CodeGenCXX/dynamic-cast.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/dynamic-cast.cpp?rev=239941&r1=239940&r2=239941&view=diff > ============================================================================== > --- cfe/trunk/test/CodeGenCXX/dynamic-cast.cpp (original) > +++ cfe/trunk/test/CodeGenCXX/dynamic-cast.cpp Wed Jun 17 15:53:19 2015 > @@ -3,6 +3,7 @@ struct A { virtual void f(); }; > struct B : A { }; > > // CHECK: {{define.*@_Z1fP1A}} > +// CHECK-SAME: personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to > i8*) > B fail; > const B& f(A *a) { > try { > @@ -11,7 +12,7 @@ const B& f(A *a) { > // CHECK: invoke void @__cxa_bad_cast() [[NR:#[0-9]+]] > dynamic_cast<const B&>(*a); > } catch (...) { > - // CHECK: landingpad { i8*, i32 } personality i8* bitcast (i32 > (...)* @__gxx_personality_v0 to i8*) > + // CHECK: landingpad { i8*, i32 } > // CHECK-NEXT: catch i8* null > } > return fail; > > Modified: cfe/trunk/test/CodeGenCXX/eh.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/eh.cpp?rev=239941&r1=239940&r2=239941&view=diff > ============================================================================== > --- cfe/trunk/test/CodeGenCXX/eh.cpp (original) > +++ cfe/trunk/test/CodeGenCXX/eh.cpp Wed Jun 17 15:53:19 2015 > @@ -102,6 +102,7 @@ namespace test6 { > // PR7127 > namespace test7 { > // CHECK-LABEL: define i32 @_ZN5test73fooEv() > +// CHECK-SAME: personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to > i8*) > int foo() { > // CHECK: [[CAUGHTEXNVAR:%.*]] = alloca i8* > // CHECK-NEXT: [[SELECTORVAR:%.*]] = alloca i32 > @@ -115,7 +116,7 @@ namespace test7 { > throw 1; > } > > -// CHECK: [[CAUGHTVAL:%.*]] = landingpad { i8*, i32 } personality i8* > bitcast (i32 (...)* @__gxx_personality_v0 to i8*) > +// CHECK: [[CAUGHTVAL:%.*]] = landingpad { i8*, i32 } > // CHECK-NEXT: catch i8* bitcast (i8** @_ZTIi to i8*) > // CHECK-NEXT: catch i8* null > // CHECK-NEXT: [[CAUGHTEXN:%.*]] = extractvalue { i8*, i32 } [[CAUGHTVAL]], 0 > @@ -137,7 +138,7 @@ namespace test7 { > throw; > } > } > -// CHECK: [[CAUGHTVAL:%.*]] = landingpad { i8*, i32 } personality i8* > bitcast (i32 (...)* @__gxx_personality_v0 to i8*) > +// CHECK: [[CAUGHTVAL:%.*]] = landingpad { i8*, i32 } > // CHECK-NEXT: catch i8* null > // CHECK-NEXT: [[CAUGHTEXN:%.*]] = extractvalue { i8*, i32 } [[CAUGHTVAL]], 0 > // CHECK-NEXT: store i8* [[CAUGHTEXN]], i8** [[CAUGHTEXNVAR]] > @@ -186,11 +187,12 @@ namespace test9 { > > > // CHECK-LABEL: define void @_ZN5test91AC2Ev(%"struct.test9::A"* %this) > unnamed_addr > + // CHECK-SAME: personality i8* bitcast (i32 (...)* @__gxx_personality_v0 > to i8*) > A::A() try { > // CHECK: invoke void @_ZN5test96opaqueEv() > opaque(); > } catch (int x) { > - // CHECK: landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* > @__gxx_personality_v0 to i8*) > + // CHECK: landingpad { i8*, i32 } > // CHECK-NEXT: catch i8* bitcast (i8** @_ZTIi to i8*) > > // CHECK: call i8* @__cxa_begin_catch > > Modified: cfe/trunk/test/CodeGenCXX/exceptions-seh.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/exceptions-seh.cpp?rev=239941&r1=239940&r2=239941&view=diff > ============================================================================== > --- cfe/trunk/test/CodeGenCXX/exceptions-seh.cpp (original) > +++ cfe/trunk/test/CodeGenCXX/exceptions-seh.cpp Wed Jun 17 15:53:19 2015 > @@ -22,6 +22,7 @@ extern "C" void use_cxx() { > // Make sure we use __CxxFrameHandler3 for C++ EH. > > // CXXEH-LABEL: define void @use_cxx() > +// CXXEH-SAME: personality i8* bitcast (i32 (...)* @__CxxFrameHandler3 to > i8*) > // CXXEH: call %struct.HasCleanup* > @"\01??0HasCleanup@@QEAA@XZ"(%struct.HasCleanup* %{{.*}}) > // CXXEH: invoke void @might_throw() > // CXXEH: to label %[[cont:[^ ]*]] unwind label %[[lpad:[^ ]*]] > @@ -31,7 +32,7 @@ extern "C" void use_cxx() { > // CXXEH: ret void > // > // CXXEH: [[lpad]] > -// CXXEH: landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* > @__CxxFrameHandler3 to i8*) > +// CXXEH: landingpad { i8*, i32 } > // CXXEH-NEXT: cleanup > // CXXEH: call void @"\01??1HasCleanup@@QEAA@XZ"(%struct.HasCleanup* %{{.*}}) > // CXXEH: br label %[[resume:[^ ]*]] > @@ -59,6 +60,7 @@ extern "C" void use_seh() { > // Make sure we use __C_specific_handler for SEH. > > // CHECK-LABEL: define void @use_seh() > +// CHECK-SAME: personality i8* bitcast (i32 (...)* @__C_specific_handler to > i8*) > // CHECK: invoke void @might_throw() #[[NOINLINE:[0-9]+]] > // CHECK: to label %[[cont:[^ ]*]] unwind label %[[lpad:[^ ]*]] > // > @@ -66,7 +68,7 @@ extern "C" void use_seh() { > // CHECK: br label %[[ret:[^ ]*]] > // > // CHECK: [[lpad]] > -// CHECK: landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* > @__C_specific_handler to i8*) > +// CHECK: landingpad { i8*, i32 } > // CHECK-NEXT: catch i8* > // > // CHECK: br label %[[ret]] > @@ -86,15 +88,17 @@ void use_seh_in_lambda() { > } > > // CXXEH-LABEL: define void @"\01?use_seh_in_lambda@@YAXXZ"() > -// CXXEH: landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* > @__CxxFrameHandler3 to i8*) > +// CXXEH-SAME: personality i8* bitcast (i32 (...)* @__CxxFrameHandler3 to > i8*) > +// CXXEH: landingpad { i8*, i32 } > > // NOCXX-LABEL: define void @"\01?use_seh_in_lambda@@YAXXZ"() > // NOCXX-NOT: invoke > // NOCXX: ret void > > // CHECK-LABEL: define internal void > @"\01??R<lambda_0>@?use_seh_in_lambda@@YAXXZ@QEBAXXZ"(%class.anon* %this) > +// CXXEH-SAME: personality i8* bitcast (i32 (...)* @__C_specific_handler to > i8*) > // CHECK: invoke void @might_throw() #[[NOINLINE]] > -// CHECK: landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* > @__C_specific_handler to i8*) > +// CHECK: landingpad { i8*, i32 } > > static int my_unique_global; > > @@ -114,10 +118,11 @@ void use_inline() { > use_seh_in_inline_func(); > } > > -// CHECK-LABEL: define linkonce_odr void @use_seh_in_inline_func() > #{{[0-9]+}} comdat { > +// CHECK-LABEL: define linkonce_odr void @use_seh_in_inline_func() > #{{[0-9]+}} comdat > +// CHECK-SAME: personality i8* bitcast (i32 (...)* @__C_specific_handler to > i8*) > // CHECK: invoke void @might_throw() > // > -// CHECK: landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* > @__C_specific_handler to i8*) > +// CHECK: landingpad { i8*, i32 } > // CHECK-NEXT: catch i8* bitcast (i32 (i8*, i8*)* > @"\01?filt$0@0@use_seh_in_inline_func@@" to i8*) > // > // CHECK: invoke void @might_throw() > @@ -126,7 +131,7 @@ void use_inline() { > // CHECK: call void @"\01?fin$0@0@use_seh_in_inline_func@@"(i8 0, i8* > %[[fp]]) > // CHECK: ret void > // > -// CHECK: landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* > @__C_specific_handler to i8*) > +// CHECK: landingpad { i8*, i32 } > // CHECK-NEXT: cleanup > // CHECK: %[[fp:[^ ]*]] = call i8* @llvm.frameaddress(i32 0) > // CHECK: call void @"\01?fin$0@0@use_seh_in_inline_func@@"(i8 1, i8* > %[[fp]]) > > Modified: cfe/trunk/test/CodeGenCXX/microsoft-abi-thread-safe-statics.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/microsoft-abi-thread-safe-statics.cpp?rev=239941&r1=239940&r2=239941&view=diff > ============================================================================== > --- cfe/trunk/test/CodeGenCXX/microsoft-abi-thread-safe-statics.cpp (original) > +++ cfe/trunk/test/CodeGenCXX/microsoft-abi-thread-safe-statics.cpp Wed Jun > 17 15:53:19 2015 > @@ -17,6 +17,7 @@ struct S { > // CHECK-DAG: @"\01?$TSS0@?1??h@@YAAAUS@@_N@Z" = linkonce_odr global i32 0 > > // CHECK-LABEL: define {{.*}} @"\01?f@@YAAAUS@@XZ"() > +// CHECK-SAME: personality i8* bitcast (i32 (...)* @__CxxFrameHandler3 to > i8*) > extern inline S &f() { > static thread_local S s; > // CHECK: %[[guard:.*]] = load i32, i32* > @"\01??__J?1??f@@YAAAUS@@XZ@51" > @@ -38,7 +39,7 @@ extern inline S &f() { > // CHECK-NEXT: ret %struct.S* @"\01?s@?1??f@@YAAAUS@@XZ@4U2@A" > > // CHECK: [[lpad:.*]]: > -// CHECK-NEXT: landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* > @__CxxFrameHandler3 to i8*) > +// CHECK-NEXT: landingpad { i8*, i32 } > // CHECK-NEXT: cleanup > // CHECK: %[[guard:.*]] = load i32, i32* > @"\01??__J?1??f@@YAAAUS@@XZ@51" > // CHECK-NEXT: %[[mask:.*]] = and i32 %[[guard]], -2 > > Modified: cfe/trunk/test/CodeGenCXX/mingw-w64-seh-exceptions.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/mingw-w64-seh-exceptions.cpp?rev=239941&r1=239940&r2=239941&view=diff > ============================================================================== > --- cfe/trunk/test/CodeGenCXX/mingw-w64-seh-exceptions.cpp (original) > +++ cfe/trunk/test/CodeGenCXX/mingw-w64-seh-exceptions.cpp Wed Jun 17 > 15:53:19 2015 > @@ -16,9 +16,11 @@ extern "C" void test() { > } > > // X64: define void @test() > +// X64-SAME: personality i8* bitcast (i32 (...)* @__gxx_personality_seh0 to > i8*) > // X64: invoke void @foo() > -// X64: landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* > @__gxx_personality_seh0 to i8*) > +// X64: landingpad { i8*, i32 } > > // X86: define void @test() > +// X86-SAME: personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to > i8*) > // X86: invoke void @foo() > -// X86: landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* > @__gxx_personality_v0 to i8*) > +// X86: landingpad { i8*, i32 } > > Modified: cfe/trunk/test/CodeGenCXX/nrvo.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/nrvo.cpp?rev=239941&r1=239940&r2=239941&view=diff > ============================================================================== > --- cfe/trunk/test/CodeGenCXX/nrvo.cpp (original) > +++ cfe/trunk/test/CodeGenCXX/nrvo.cpp Wed Jun 17 15:53:19 2015 > @@ -44,6 +44,7 @@ X test1(bool B) { > > // CHECK-LABEL: define void @_Z5test2b > // CHECK-EH-LABEL: define void @_Z5test2b > +// CHECK-EH-SAME: personality i8* bitcast (i32 (...)* @__gxx_personality_v0 > to i8*) > X test2(bool B) { > // No NRVO. > > @@ -82,7 +83,7 @@ X test2(bool B) { > // -> %cleanup, %lpad1 > > // %lpad: landing pad for ctor of 'y', dtor of 'y' > - // CHECK-EH: [[CAUGHTVAL:%.*]] = landingpad { i8*, i32 } personality > i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) > + // CHECK-EH: [[CAUGHTVAL:%.*]] = landingpad { i8*, i32 } > // CHECK-EH-NEXT: cleanup > // CHECK-EH-NEXT: extractvalue { i8*, i32 } [[CAUGHTVAL]], 0 > // CHECK-EH-NEXT: extractvalue { i8*, i32 } [[CAUGHTVAL]], 1 > @@ -116,7 +117,7 @@ X test2(bool B) { > // CHECK-EH: resume { i8*, i32 } > > // %terminate.lpad: terminate landing pad. > - // CHECK-EH: [[T0:%.*]] = landingpad { i8*, i32 } personality i8* > bitcast (i32 (...)* @__gxx_personality_v0 to i8*) > + // CHECK-EH: [[T0:%.*]] = landingpad { i8*, i32 } > // CHECK-EH-NEXT: catch i8* null > // CHECK-EH-NEXT: [[T1:%.*]] = extractvalue { i8*, i32 } [[T0]], 0 > // CHECK-EH-NEXT: call void @__clang_call_terminate(i8* [[T1]]) > [[NR_NUW:#[0-9]+]] > > Modified: cfe/trunk/test/CodeGenCXX/partial-destruction.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/partial-destruction.cpp?rev=239941&r1=239940&r2=239941&view=diff > ============================================================================== > --- cfe/trunk/test/CodeGenCXX/partial-destruction.cpp (original) > +++ cfe/trunk/test/CodeGenCXX/partial-destruction.cpp Wed Jun 17 15:53:19 2015 > @@ -12,6 +12,7 @@ namespace test0 { > opaque(); > } > // CHECK-LABEL: define void @_ZN5test04testEv() > + // CHECK-SAME: personality i8* bitcast (i32 (...)* @__gxx_personality_v0 > to i8*) > // CHECK: [[AS:%.*]] = alloca [10 x [[A:%.*]]], align > // CHECK-NEXT: [[ENDVAR:%.*]] = alloca [[A]]* > // CHECK-NEXT: [[EXN:%.*]] = alloca i8* > @@ -50,7 +51,7 @@ namespace test0 { > // CHECK: ret void > > // Partial destroy for initialization. > - // CHECK: landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* > @__gxx_personality_v0 to i8*) > + // CHECK: landingpad { i8*, i32 } > // CHECK-NEXT: cleanup > // CHECK: [[PARTIAL_END:%.*]] = load [[A]]*, [[A]]** [[ENDVAR]] > // CHECK-NEXT: [[T0:%.*]] = icmp eq [[A]]* [[E_BEGIN]], [[PARTIAL_END]] > @@ -62,7 +63,7 @@ namespace test0 { > // CHECK-NEXT: br i1 [[T0]], > > // Primary EH destructor. > - // CHECK: landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* > @__gxx_personality_v0 to i8*) > + // CHECK: landingpad { i8*, i32 } > // CHECK-NEXT: cleanup > // CHECK: [[E0:%.*]] = getelementptr inbounds [10 x [[A]]], [10 x > [[A]]]* [[AS]], i32 0, i32 0 > // CHECK-NEXT: [[E_END:%.*]] = getelementptr inbounds [[A]], [[A]]* > [[E0]], i64 10 > @@ -72,7 +73,7 @@ namespace test0 { > // FIXME: There's some really bad block ordering here which causes > // the partial destroy for the primary normal destructor to fall > // within the primary EH destructor. > - // CHECK: landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* > @__gxx_personality_v0 to i8*) > + // CHECK: landingpad { i8*, i32 } > // CHECK-NEXT: cleanup > // CHECK: [[T0:%.*]] = icmp eq [[A]]* [[ED_BEGIN]], [[ED_CUR]] > // CHECK-NEXT: br i1 [[T0]] > @@ -99,6 +100,7 @@ namespace test1 { > B v = { 5, 6, 7, 8 }; > } > // CHECK-LABEL: define void @_ZN5test14testEv() > + // CHECK-SAME: personality i8* bitcast (i32 (...)* @__gxx_personality_v0 > to i8*) > // CHECK: [[V:%.*]] = alloca [[B:%.*]], align 4 > // CHECK-NEXT: alloca i8* > // CHECK-NEXT: alloca i32 > @@ -114,9 +116,9 @@ namespace test1 { > // CHECK-NEXT: ret void > > // FIXME: again, the block ordering is pretty bad here > - // CHECK: landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* > @__gxx_personality_v0 to i8*) > + // CHECK: landingpad { i8*, i32 } > // CHECK-NEXT: cleanup > - // CHECK: landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* > @__gxx_personality_v0 to i8*) > + // CHECK: landingpad { i8*, i32 } > // CHECK-NEXT: cleanup > // CHECK: invoke void @_ZN5test11AD1Ev([[A]]* [[Y]]) > // CHECK: invoke void @_ZN5test11AD1Ev([[A]]* [[X]]) > @@ -129,6 +131,7 @@ namespace test2 { > A v[4][7]; > > // CHECK-LABEL: define void @_ZN5test24testEv() > + // CHECK-SAME: personality i8* bitcast (i32 (...)* @__gxx_personality_v0 > to i8*) > // CHECK: [[V:%.*]] = alloca [4 x [7 x [[A:%.*]]]], align 1 > // CHECK-NEXT: alloca i8* > // CHECK-NEXT: alloca i32 > @@ -144,7 +147,7 @@ namespace test2 { > // CHECK-NEXT: br i1 [[DONE]], > > // Partial destruction landing pad. > - // CHECK: landingpad { i8*, i32 } personality i8* bitcast (i32 > (...)* @__gxx_personality_v0 to i8*) > + // CHECK: landingpad { i8*, i32 } > // CHECK-NEXT: cleanup > // CHECK: [[EMPTY:%.*]] = icmp eq [[A]]* [[BEGIN]], [[CUR]] > // CHECK-NEXT: br i1 [[EMPTY]], > > Modified: cfe/trunk/test/CodeGenCXX/threadsafe-statics-exceptions.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/threadsafe-statics-exceptions.cpp?rev=239941&r1=239940&r2=239941&view=diff > ============================================================================== > --- cfe/trunk/test/CodeGenCXX/threadsafe-statics-exceptions.cpp (original) > +++ cfe/trunk/test/CodeGenCXX/threadsafe-statics-exceptions.cpp Wed Jun 17 > 15:53:19 2015 > @@ -8,6 +8,7 @@ struct X { > struct Y { }; > > // CHECK-LABEL: define void @_Z1fv > +// CHECK-SAME: personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to > i8*) > void f() { > // CHECK: call i32 @__cxa_guard_acquire(i64* @_ZGVZ1fvE1x) > // CHECK: invoke void @_ZN1XC1Ev > @@ -21,7 +22,7 @@ void f() { > throw Y(); > > // Finally, the landing pad. > - // CHECK: landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* > @__gxx_personality_v0 to i8*) > + // CHECK: landingpad { i8*, i32 } > // CHECK: cleanup > // CHECK: call void @__cxa_guard_abort(i64* @_ZGVZ1fvE1x) > // CHECK: resume { i8*, i32 } > > Modified: cfe/trunk/test/CodeGenCXX/typeid.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/typeid.cpp?rev=239941&r1=239940&r2=239941&view=diff > ============================================================================== > --- cfe/trunk/test/CodeGenCXX/typeid.cpp (original) > +++ cfe/trunk/test/CodeGenCXX/typeid.cpp Wed Jun 17 15:53:19 2015 > @@ -31,13 +31,14 @@ const std::type_info &a_ti = typeid(a); > const std::type_info &A10_c_ti = typeid(char const[10]); > > // CHECK-LABEL: define i8* @_ZN5Test11fEv > +// CHECK-SAME: personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to > i8*) > const char *f() { > try { > // CHECK: br i1 > // CHECK: invoke void @__cxa_bad_typeid() [[NR:#[0-9]+]] > return typeid(*static_cast<A *>(0)).name(); > } catch (...) { > - // CHECK: landingpad { i8*, i32 } personality i8* bitcast (i32 > (...)* @__gxx_personality_v0 to i8*) > + // CHECK: landingpad { i8*, i32 } > // CHECK-NEXT: catch i8* null > } > > > Modified: cfe/trunk/test/CodeGenCXX/windows-itanium-exceptions.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/windows-itanium-exceptions.cpp?rev=239941&r1=239940&r2=239941&view=diff > ============================================================================== > --- cfe/trunk/test/CodeGenCXX/windows-itanium-exceptions.cpp (original) > +++ cfe/trunk/test/CodeGenCXX/windows-itanium-exceptions.cpp Wed Jun 17 > 15:53:19 2015 > @@ -20,7 +20,8 @@ void attempt() { > // CHECK: unreachable > // CHECK: } > > -// CHECK: define {{.*}}void @_Z7attemptv() {{.*}} { > +// CHECK: define {{.*}}void @_Z7attemptv() > +// CHECK-SAME: personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to > i8*) > // CHECK: %exn.slot = alloca i8* > // CHECK: %ehselector.slot = alloca i32 > // CHECK: invoke {{.*}}void @_Z6exceptv() > @@ -28,7 +29,7 @@ void attempt() { > // CHECK: invoke.cont: > // CHECK: br label %try.cont > // CHECK: lpad: > -// CHECK: %0 = landingpad { i8*, i32 } personality i8* bitcast (i32 > (...)* @__gxx_personality_v0 to i8*) > +// CHECK: %0 = landingpad { i8*, i32 } > // CHECK: catch i8* null > // CHECK: %1 = extractvalue { i8*, i32 } %0, 0 > // CHECK: store i8* %1, i8** %exn.slot > > Modified: cfe/trunk/test/CodeGenObjC/autorelease.m > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/autorelease.m?rev=239941&r1=239940&r2=239941&view=diff > ============================================================================== > --- cfe/trunk/test/CodeGenObjC/autorelease.m (original) > +++ cfe/trunk/test/CodeGenObjC/autorelease.m Wed Jun 17 15:53:19 2015 > @@ -46,7 +46,7 @@ int tryTo(int (*f)(void)) { > // CHECK-NEXT: [[T2:%.*]] = invoke i32 [[T1]]() > // CHECK: store i32 [[T2]], i32* [[RET]] > // CHECK: invoke void @objc_autoreleasePoolPop(i8* [[T0]]) > -// CHECK: landingpad { i8*, i32 } personality > +// CHECK: landingpad { i8*, i32 } > // CHECK-NEXT: catch i8* null > // CHECK: call i8* @objc_begin_catch > // CHECK-NEXT: store i32 0, i32* [[RET]] > > Modified: cfe/trunk/test/CodeGenObjC/blocks-2.m > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/blocks-2.m?rev=239941&r1=239940&r2=239941&view=diff > ============================================================================== > --- cfe/trunk/test/CodeGenObjC/blocks-2.m (original) > +++ cfe/trunk/test/CodeGenObjC/blocks-2.m Wed Jun 17 15:53:19 2015 > @@ -30,7 +30,7 @@ void test1() { > // CHECK-NEXT: call void @_Block_object_dispose(i8* [[T1]], i32 8) > // CHECK-NEXT: ret void > > - // CHECK: landingpad { i8*, i32 } personality > + // CHECK: landingpad { i8*, i32 } > // CHECK-NEXT: cleanup > // CHECK: [[T1:%.*]] = bitcast [[N_T]]* [[N]] to i8* > // CHECK-NEXT: call void @_Block_object_dispose(i8* [[T1]], i32 8) > > Modified: cfe/trunk/test/CodeGenObjC/gnu-exceptions.m > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/gnu-exceptions.m?rev=239941&r1=239940&r2=239941&view=diff > ============================================================================== > --- cfe/trunk/test/CodeGenObjC/gnu-exceptions.m (original) > +++ cfe/trunk/test/CodeGenObjC/gnu-exceptions.m Wed Jun 17 15:53:19 2015 > @@ -6,7 +6,8 @@ void log(int i); > > @class C; > > -// CHECK: define void @test0() [[TF:#[0-9]+]] { > +// CHECK: define void @test0() [[TF:#[0-9]+]] > +// CHECK-SAME: personality i8* bitcast (i32 (...)* > @__gnu_objc_personality_v0 to i8*) > void test0() { > @try { > // CHECK: invoke void @opaque() > @@ -15,7 +16,7 @@ void test0() { > // CHECK: call void @log(i32 1) > > } @catch (C *c) { > - // CHECK: landingpad { i8*, i32 } personality i8* bitcast (i32 > (...)* @__gnu_objc_personality_v0 to i8*) > + // CHECK: landingpad { i8*, i32 } > // CHECK-NEXT: catch i8* getelementptr inbounds ([2 x i8], [2 x i8]* > @0, i64 0, i64 0) > // CHECK: br i1 > > > Modified: cfe/trunk/test/CodeGenObjC/terminate.m > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/terminate.m?rev=239941&r1=239940&r2=239941&view=diff > ============================================================================== > --- cfe/trunk/test/CodeGenObjC/terminate.m (original) > +++ cfe/trunk/test/CodeGenObjC/terminate.m Wed Jun 17 15:53:19 2015 > @@ -10,20 +10,22 @@ void test0(void) { > test0_helper(); > > // CHECK-WITH-LABEL: define void @test0() > + // CHECK-WITH-SAME: personality i8* bitcast (i32 (...)* > @__gcc_personality_v0 to i8*) > // CHECK-WITH: [[PTR:%.*]] = alloca i8*, > // CHECK-WITH: call void @destroy(i8** [[PTR]]) > // CHECK-WITH-NEXT: ret void > // CHECK-WITH: invoke void @destroy(i8** [[PTR]]) > - // CHECK-WITH: landingpad { i8*, i32 } personality i8* bitcast > (i32 (...)* @__gcc_personality_v0 to i8*) > + // CHECK-WITH: landingpad { i8*, i32 } > // CHECK-WITH-NEXT: catch i8* null > // CHECK-WITH-NEXT: call void @objc_terminate() > > // CHECK-WITHOUT-LABEL: define void @test0() > + // CHECK-WITHOUT-SAME: personality i8* bitcast (i32 (...)* > @__gcc_personality_v0 to i8*) > // CHECK-WITHOUT: [[PTR:%.*]] = alloca i8*, > // CHECK-WITHOUT: call void @destroy(i8** [[PTR]]) > // CHECK-WITHOUT-NEXT: ret void > // CHECK-WITHOUT: invoke void @destroy(i8** [[PTR]]) > - // CHECK-WITHOUT: landingpad { i8*, i32 } personality i8* bitcast > (i32 (...)* @__gcc_personality_v0 to i8*) > + // CHECK-WITHOUT: landingpad { i8*, i32 } > // CHECK-WITHOUT-NEXT: catch i8* null > // CHECK-WITHOUT-NEXT: call void @abort() > } > > Modified: cfe/trunk/test/CodeGenObjCXX/catch-id-type.mm > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/catch-id-type.mm?rev=239941&r1=239940&r2=239941&view=diff > ============================================================================== > --- cfe/trunk/test/CodeGenObjCXX/catch-id-type.mm (original) > +++ cfe/trunk/test/CodeGenObjCXX/catch-id-type.mm Wed Jun 17 15:53:19 2015 > @@ -30,7 +30,7 @@ id FUNC() { > } > catch( id error ) > { > - // CHECK: landingpad { i8*, i32 } personality i8* bitcast (i32 > (...)* @__gxx_personality_v0 to i8*) > + // CHECK: landingpad { i8*, i32 } > // CHECK-NEXT: catch i8* bitcast ({ i8*, i8*, i32, i8* }* > @_ZTIPU11objcproto1P4INTF to i8*) > // CHECK-NEXT: catch i8* bitcast ({ i8*, i8*, i32, i8* }* > @_ZTIP11objc_object to i8*) > // CHECK-NEXT: catch i8* bitcast ({ i8*, i8*, i32, i8* }* > @_ZTIP10objc_class to i8*) > > Modified: cfe/trunk/test/CodeGenObjCXX/exceptions.mm > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/exceptions.mm?rev=239941&r1=239940&r2=239941&view=diff > ============================================================================== > --- cfe/trunk/test/CodeGenObjCXX/exceptions.mm (original) > +++ cfe/trunk/test/CodeGenObjCXX/exceptions.mm Wed Jun 17 15:53:19 2015 > @@ -6,12 +6,13 @@ void opaque(); > namespace test0 { > > // CHECK-LABEL: define void @_ZN5test03fooEv > + // CHECK-SAME: personality i8* bitcast (i32 (...)* @__objc_personality_v0 > to i8*) > void foo() { > try { > // CHECK: invoke void @_Z6opaquev > opaque(); > } catch (OCType *T) { > - // CHECK: landingpad { i8*, i32 } personality i8* bitcast (i32 > (...)* @__objc_personality_v0 to i8*) > + // CHECK: landingpad { i8*, i32 } > // CHECK-NEXT: catch %struct._objc_typeinfo* @"OBJC_EHTYPE_$_OCType" > } > } > > > _______________________________________________ > cfe-commits mailing list > cfe-commits@cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list cfe-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits