forked from OSchip/llvm-project
[EH] Rename llvm.x86.seh.recoverfp intrinsic to llvm.eh.recoverfp
This is the clang counterpart to D56747. Patch by Mandeep Singh Grang. Differential Revision: https://reviews.llvm.org/D56748 llvm-svn: 351284
This commit is contained in:
parent
500e3ead9f
commit
c4c43b2bad
|
@ -1781,7 +1781,7 @@ void CodeGenFunction::EmitCapturedLocals(CodeGenFunction &ParentCGF,
|
|||
// frame pointer of the parent function. We only need to do this in filters,
|
||||
// since finally funclets recover the parent FP for us.
|
||||
llvm::Function *RecoverFPIntrin =
|
||||
CGM.getIntrinsic(llvm::Intrinsic::x86_seh_recoverfp);
|
||||
CGM.getIntrinsic(llvm::Intrinsic::eh_recoverfp);
|
||||
llvm::Constant *ParentI8Fn =
|
||||
llvm::ConstantExpr::getBitCast(ParentCGF.CurFn, Int8PtrTy);
|
||||
ParentFP = Builder.CreateCall(RecoverFPIntrin, {ParentI8Fn, EntryFP});
|
||||
|
|
|
@ -52,7 +52,7 @@ int safe_div(int numerator, int denominator, int *res) {
|
|||
//
|
||||
// X86-LABEL: define internal i32 @"?filt$0@0@safe_div@@"()
|
||||
// X86: %[[ebp:[^ ]*]] = call i8* @llvm.frameaddress(i32 1)
|
||||
// X86: %[[fp:[^ ]*]] = call i8* @llvm.x86.seh.recoverfp(i8* bitcast (i32 (i32, i32, i32*)* @safe_div to i8*), i8* %[[ebp]])
|
||||
// X86: %[[fp:[^ ]*]] = call i8* @llvm.eh.recoverfp(i8* bitcast (i32 (i32, i32, i32*)* @safe_div to i8*), i8* %[[ebp]])
|
||||
// X86: call i8* @llvm.localrecover(i8* bitcast (i32 (i32, i32, i32*)* @safe_div to i8*), i8* %[[fp]], i32 0)
|
||||
// X86: load i8*, i8**
|
||||
// X86: load i32*, i32**
|
||||
|
@ -95,16 +95,16 @@ int filter_expr_capture(void) {
|
|||
// CHECK: ret i32 %[[rv]]
|
||||
|
||||
// X64-LABEL: define internal i32 @"?filt$0@0@filter_expr_capture@@"(i8* %exception_pointers, i8* %frame_pointer)
|
||||
// X64: %[[fp:[^ ]*]] = call i8* @llvm.x86.seh.recoverfp(i8* bitcast (i32 ()* @filter_expr_capture to i8*), i8* %frame_pointer)
|
||||
// X64: %[[fp:[^ ]*]] = call i8* @llvm.eh.recoverfp(i8* bitcast (i32 ()* @filter_expr_capture to i8*), i8* %frame_pointer)
|
||||
// X64: call i8* @llvm.localrecover(i8* bitcast (i32 ()* @filter_expr_capture to i8*), i8* %[[fp]], i32 0)
|
||||
//
|
||||
// ARM64-LABEL: define internal i32 @"?filt$0@0@filter_expr_capture@@"(i8* %exception_pointers, i8* %frame_pointer)
|
||||
// ARM64: %[[fp:[^ ]*]] = call i8* @llvm.x86.seh.recoverfp(i8* bitcast (i32 ()* @filter_expr_capture to i8*), i8* %frame_pointer)
|
||||
// ARM64: %[[fp:[^ ]*]] = call i8* @llvm.eh.recoverfp(i8* bitcast (i32 ()* @filter_expr_capture to i8*), i8* %frame_pointer)
|
||||
// ARM64: call i8* @llvm.localrecover(i8* bitcast (i32 ()* @filter_expr_capture to i8*), i8* %[[fp]], i32 0)
|
||||
//
|
||||
// X86-LABEL: define internal i32 @"?filt$0@0@filter_expr_capture@@"()
|
||||
// X86: %[[ebp:[^ ]*]] = call i8* @llvm.frameaddress(i32 1)
|
||||
// X86: %[[fp:[^ ]*]] = call i8* @llvm.x86.seh.recoverfp(i8* bitcast (i32 ()* @filter_expr_capture to i8*), i8* %[[ebp]])
|
||||
// X86: %[[fp:[^ ]*]] = call i8* @llvm.eh.recoverfp(i8* bitcast (i32 ()* @filter_expr_capture to i8*), i8* %[[ebp]])
|
||||
// X86: call i8* @llvm.localrecover(i8* bitcast (i32 ()* @filter_expr_capture to i8*), i8* %[[fp]], i32 0)
|
||||
//
|
||||
// CHECK: store i32 -1, i32* %{{.*}}
|
||||
|
@ -166,13 +166,13 @@ int nested_try(void) {
|
|||
// CHECK: br label %[[inner_try_cont]]
|
||||
//
|
||||
// CHECK-LABEL: define internal i32 @"?filt$0@0@nested_try@@"({{.*}})
|
||||
// X86: call i8* @llvm.x86.seh.recoverfp({{.*}})
|
||||
// X86: call i8* @llvm.eh.recoverfp({{.*}})
|
||||
// CHECK: load i32*, i32**
|
||||
// CHECK: load i32, i32*
|
||||
// CHECK: icmp eq i32 %{{.*}}, 456
|
||||
//
|
||||
// CHECK-LABEL: define internal i32 @"?filt$1@0@nested_try@@"({{.*}})
|
||||
// X86: call i8* @llvm.x86.seh.recoverfp({{.*}})
|
||||
// X86: call i8* @llvm.eh.recoverfp({{.*}})
|
||||
// CHECK: load i32*, i32**
|
||||
// CHECK: load i32, i32*
|
||||
// CHECK: icmp eq i32 %{{.*}}, 123
|
||||
|
|
|
@ -21,7 +21,7 @@ extern "C" void test_freefunc(int p1) {
|
|||
// CHECK: invoke void @might_crash()
|
||||
|
||||
// CHECK-LABEL: define internal i32 @"?filt$0@0@test_freefunc@@"(i8* %exception_pointers, i8* %frame_pointer)
|
||||
// CHECK: %[[fp:[^ ]*]] = call i8* @llvm.x86.seh.recoverfp(i8* bitcast (void (i32)* @test_freefunc to i8*), i8* %frame_pointer)
|
||||
// CHECK: %[[fp:[^ ]*]] = call i8* @llvm.eh.recoverfp(i8* bitcast (void (i32)* @test_freefunc to i8*), i8* %frame_pointer)
|
||||
// CHECK: %[[p1_i8:[^ ]*]] = call i8* @llvm.localrecover(i8* bitcast (void (i32)* @test_freefunc to i8*), i8* %[[fp]], i32 0)
|
||||
// CHECK: %[[p1_ptr:[^ ]*]] = bitcast i8* %[[p1_i8]] to i32*
|
||||
// CHECK: %[[l1_i8:[^ ]*]] = call i8* @llvm.localrecover(i8* bitcast (void (i32)* @test_freefunc to i8*), i8* %[[fp]], i32 1)
|
||||
|
@ -51,7 +51,7 @@ void S::test_method() {
|
|||
// CHECK: invoke void @might_crash()
|
||||
|
||||
// CHECK-LABEL: define internal i32 @"?filt$0@0@test_method@S@@"(i8* %exception_pointers, i8* %frame_pointer)
|
||||
// CHECK: %[[fp:[^ ]*]] = call i8* @llvm.x86.seh.recoverfp(i8* bitcast (void (%struct.S*)* @"?test_method@S@@QEAAXXZ" to i8*), i8* %frame_pointer)
|
||||
// CHECK: %[[fp:[^ ]*]] = call i8* @llvm.eh.recoverfp(i8* bitcast (void (%struct.S*)* @"?test_method@S@@QEAAXXZ" to i8*), i8* %frame_pointer)
|
||||
// CHECK: %[[l1_i8:[^ ]*]] = call i8* @llvm.localrecover(i8* bitcast (void (%struct.S*)* @"?test_method@S@@QEAAXXZ" to i8*), i8* %[[fp]], i32 0)
|
||||
// CHECK: %[[l1_ptr:[^ ]*]] = bitcast i8* %[[l1_i8]] to i32*
|
||||
// CHECK: %[[l1:[^ ]*]] = load i32, i32* %[[l1_ptr]]
|
||||
|
@ -76,7 +76,7 @@ void test_lambda() {
|
|||
// CHECK: invoke void @might_crash()
|
||||
|
||||
// CHECK-LABEL: define internal i32 @"?filt$0@0@?R<lambda_0>@?0??test_lambda@@YAXXZ@"(i8* %exception_pointers, i8* %frame_pointer)
|
||||
// CHECK: %[[fp:[^ ]*]] = call i8* @llvm.x86.seh.recoverfp(i8* bitcast (void (%class.anon*)* @"??R<lambda_0>@?0??test_lambda@@YAXXZ@QEBA@XZ" to i8*), i8* %frame_pointer)
|
||||
// CHECK: %[[fp:[^ ]*]] = call i8* @llvm.eh.recoverfp(i8* bitcast (void (%class.anon*)* @"??R<lambda_0>@?0??test_lambda@@YAXXZ@QEBA@XZ" to i8*), i8* %frame_pointer)
|
||||
// CHECK: %[[l2_i8:[^ ]*]] = call i8* @llvm.localrecover(i8* bitcast (void (%class.anon*)* @"??R<lambda_0>@?0??test_lambda@@YAXXZ@QEBA@XZ" to i8*), i8* %[[fp]], i32 0)
|
||||
// CHECK: %[[l2_ptr:[^ ]*]] = bitcast i8* %[[l2_i8]] to i32*
|
||||
// CHECK: %[[l2:[^ ]*]] = load i32, i32* %[[l2_ptr]]
|
||||
|
|
Loading…
Reference in New Issue