r239941 - Update clang to take into account the changes to personality fns

Rafael EspĂ­ndola rafael.espindola at gmail.com
Thu Jun 18 10:19:56 PDT 2015


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.majnemer at 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 at 0@nested_try@@" to i8*)
>  // CHECK: catch i8* bitcast (i32 (i8*, i8*)* @"\01?filt$0 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 51"
> @@ -38,7 +39,7 @@ extern inline S &f() {
>  // CHECK-NEXT:  ret %struct.S* @"\01?s@?1??f@@YAAAUS@@XZ at 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 at 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 at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits



More information about the cfe-commits mailing list