Author: Kevin P. Neal Date: 2020-12-15T12:58:47-05:00 New Revision: 2ec5973fddb07e66ae0df7d0aac2cda55387b0bd
URL: https://github.com/llvm/llvm-project/commit/2ec5973fddb07e66ae0df7d0aac2cda55387b0bd DIFF: https://github.com/llvm/llvm-project/commit/2ec5973fddb07e66ae0df7d0aac2cda55387b0bd.diff LOG: Revert "[FPEnv] Teach the IRBuilder about invoke's correct use of the strictfp attribute." The test is busted on some hosts that aren't the one I'm using. This reverts commit 67a1ffd88ac08526bb6cfc7b3f607e6668ba1c70. Added: Modified: llvm/include/llvm/IR/IRBuilder.h Removed: clang/test/CodeGen/exceptions-strictfp.c ################################################################################ diff --git a/clang/test/CodeGen/exceptions-strictfp.c b/clang/test/CodeGen/exceptions-strictfp.c deleted file mode 100644 index f1c279908e45..000000000000 --- a/clang/test/CodeGen/exceptions-strictfp.c +++ /dev/null @@ -1,37 +0,0 @@ -// RUN: %clang_cc1 -triple armv7-apple-unknown -ffp-exception-behavior=strict -fexperimental-strict-floating-point -emit-llvm -o - %s -fexceptions -fsjlj-exceptions -fblocks | FileCheck %s - -// Verify strictfp attributes on invoke calls (and therefore also on -// function definitions). - -// rdar://problem/8621849 -void test1() { - extern void test1_helper(void (^)(int)); - - // CHECK: define arm_aapcscc void @test1() [[STRICTFP0:#[0-9]+]] personality i8* bitcast (i32 (...)* @__gcc_personality_sj0 to i8*) - - __block int x = 10; - - // CHECK: invoke arm_aapcscc void @test1_helper({{.*}}) [[STRICTFP1:#[0-9]+]] - test1_helper(^(int v) { x = v; }); - - // CHECK: landingpad { i8*, i32 } - // CHECK-NEXT: cleanup -} - -void test2_helper(); -void test2() { - // CHECK: define arm_aapcscc void @test2() [[STRICTFP0]] personality i8* bitcast (i32 (...)* @__gcc_personality_sj0 to i8*) { - __block int x = 10; - ^{ (void)x; }; - - // CHECK: invoke arm_aapcscc void @test2_helper({{.*}}) [[STRICTFP1:#[0-9]+]] - test2_helper(5, 6, 7); - - // CHECK: landingpad { i8*, i32 } - // CHECK-NEXT: cleanup -} -void test2_helper(int x, int y) { -} - -// CHECK: attributes [[STRICTFP0]] = { {{.*}}strictfp{{.*}} } -// CHECK: attributes [[STRICTFP1]] = { strictfp } diff --git a/llvm/include/llvm/IR/IRBuilder.h b/llvm/include/llvm/IR/IRBuilder.h index 6010f1a706a3..c2b3446d159f 100644 --- a/llvm/include/llvm/IR/IRBuilder.h +++ b/llvm/include/llvm/IR/IRBuilder.h @@ -301,7 +301,7 @@ class IRBuilderBase { } } - void setConstrainedFPCallAttr(CallBase *I) { + void setConstrainedFPCallAttr(CallInst *I) { I->addAttribute(AttributeList::FunctionIndex, Attribute::StrictFP); } @@ -1023,21 +1023,16 @@ class IRBuilderBase { ArrayRef<Value *> Args, ArrayRef<OperandBundleDef> OpBundles, const Twine &Name = "") { - InvokeInst *II = - InvokeInst::Create(Ty, Callee, NormalDest, UnwindDest, Args, OpBundles); - if (IsFPConstrained) - setConstrainedFPCallAttr(II); - return Insert(II, Name); + return Insert( + InvokeInst::Create(Ty, Callee, NormalDest, UnwindDest, Args, OpBundles), + Name); } InvokeInst *CreateInvoke(FunctionType *Ty, Value *Callee, BasicBlock *NormalDest, BasicBlock *UnwindDest, ArrayRef<Value *> Args = None, const Twine &Name = "") { - InvokeInst *II = - InvokeInst::Create(Ty, Callee, NormalDest, UnwindDest, Args); - if (IsFPConstrained) - setConstrainedFPCallAttr(II); - return Insert(II, Name); + return Insert(InvokeInst::Create(Ty, Callee, NormalDest, UnwindDest, Args), + Name); } InvokeInst *CreateInvoke(FunctionCallee Callee, BasicBlock *NormalDest, _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits