[PATCH] D84878: [FPEnv] IRBuilder fails to add strictfp attribute
Kevin P. Neal via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Aug 3 10:25:50 PDT 2020
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rGd535a91d13b8: [FPEnv] IRBuilder fails to add strictfp attribute (authored by kpn).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D84878/new/
https://reviews.llvm.org/D84878
Files:
llvm/include/llvm/IR/IRBuilder.h
llvm/unittests/IR/IRBuilderTest.cpp
Index: llvm/unittests/IR/IRBuilderTest.cpp
===================================================================
--- llvm/unittests/IR/IRBuilderTest.cpp
+++ llvm/unittests/IR/IRBuilderTest.cpp
@@ -332,6 +332,33 @@
EXPECT_EQ(fp::ebStrict, CII->getExceptionBehavior());
}
+TEST_F(IRBuilderTest, ConstrainedFPFunctionCall) {
+ IRBuilder<> Builder(BB);
+
+ // Create an empty constrained FP function.
+ FunctionType *FTy = FunctionType::get(Type::getVoidTy(Ctx),
+ /*isVarArg=*/false);
+ Function *Callee =
+ Function::Create(FTy, Function::ExternalLinkage, "", M.get());
+ BasicBlock *CalleeBB = BasicBlock::Create(Ctx, "", Callee);
+ IRBuilder<> CalleeBuilder(CalleeBB);
+ CalleeBuilder.setIsFPConstrained(true);
+ CalleeBuilder.setConstrainedFPFunctionAttr();
+ CalleeBuilder.CreateRetVoid();
+
+ // Now call the empty constrained FP function.
+ Builder.setIsFPConstrained(true);
+ Builder.setConstrainedFPFunctionAttr();
+ CallInst *FCall = Builder.CreateCall(Callee, None);
+
+ // Check the attributes to verify the strictfp attribute is on the call.
+ EXPECT_TRUE(FCall->getAttributes().getFnAttributes().hasAttribute(
+ Attribute::StrictFP));
+
+ Builder.CreateRetVoid();
+ EXPECT_FALSE(verifyModule(*M));
+}
+
TEST_F(IRBuilderTest, Lifetime) {
IRBuilder<> Builder(BB);
AllocaInst *Var1 = Builder.CreateAlloca(Builder.getInt8Ty());
Index: llvm/include/llvm/IR/IRBuilder.h
===================================================================
--- llvm/include/llvm/IR/IRBuilder.h
+++ llvm/include/llvm/IR/IRBuilder.h
@@ -294,8 +294,7 @@
}
void setConstrainedFPCallAttr(CallInst *I) {
- if (!I->hasFnAttr(Attribute::StrictFP))
- I->addAttribute(AttributeList::FunctionIndex, Attribute::StrictFP);
+ I->addAttribute(AttributeList::FunctionIndex, Attribute::StrictFP);
}
void setDefaultOperandBundles(ArrayRef<OperandBundleDef> OpBundles) {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D84878.282674.patch
Type: text/x-patch
Size: 1942 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200803/67dd9ed9/attachment.bin>
More information about the llvm-commits
mailing list