[llvm] r256674 - add FMF for CreateCall variant
Sanjay Patel via llvm-commits
llvm-commits at lists.llvm.org
Thu Dec 31 07:39:34 PST 2015
Author: spatel
Date: Thu Dec 31 09:39:34 2015
New Revision: 256674
URL: http://llvm.org/viewvc/llvm-project?rev=256674&view=rev
Log:
add FMF for CreateCall variant
The version with OpBundles was missed in:
http://reviews.llvm.org/rL255555
Modified:
llvm/trunk/include/llvm/IR/IRBuilder.h
llvm/trunk/unittests/IR/IRBuilderTest.cpp
Modified: llvm/trunk/include/llvm/IR/IRBuilder.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/IRBuilder.h?rev=256674&r1=256673&r2=256674&view=diff
==============================================================================
--- llvm/trunk/include/llvm/IR/IRBuilder.h (original)
+++ llvm/trunk/include/llvm/IR/IRBuilder.h Thu Dec 31 09:39:34 2015
@@ -1529,8 +1529,11 @@ public:
CallInst *CreateCall(Value *Callee, ArrayRef<Value *> Args = None,
ArrayRef<OperandBundleDef> OpBundles = None,
- const Twine &Name = "") {
- return Insert(CallInst::Create(Callee, Args, OpBundles), Name);
+ const Twine &Name = "", MDNode *FPMathTag = nullptr) {
+ CallInst *CI = CallInst::Create(Callee, Args, OpBundles);
+ if (isa<FPMathOperator>(CI))
+ CI = cast<CallInst>(AddFPMathAttributes(CI, FPMathTag, FMF));
+ return Insert(CI, Name);
}
CallInst *CreateCall(Value *Callee, ArrayRef<Value *> Args,
Modified: llvm/trunk/unittests/IR/IRBuilderTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/IR/IRBuilderTest.cpp?rev=256674&r1=256673&r2=256674&view=diff
==============================================================================
--- llvm/trunk/unittests/IR/IRBuilderTest.cpp (original)
+++ llvm/trunk/unittests/IR/IRBuilderTest.cpp Thu Dec 31 09:39:34 2015
@@ -217,6 +217,11 @@ TEST_F(IRBuilderTest, FastMathFlags) {
FCall = Builder.CreateCall(Callee, None);
EXPECT_FALSE(FCall->hasNoNaNs());
+ Value *V =
+ Function::Create(CalleeTy, Function::ExternalLinkage, "", M.get());
+ FCall = Builder.CreateCall(V, None);
+ EXPECT_FALSE(FCall->hasNoNaNs());
+
FMF.clear();
FMF.setNoNaNs();
Builder.SetFastMathFlags(FMF);
@@ -225,6 +230,11 @@ TEST_F(IRBuilderTest, FastMathFlags) {
EXPECT_TRUE(Builder.getFastMathFlags().any());
EXPECT_TRUE(Builder.getFastMathFlags().NoNaNs);
EXPECT_TRUE(FCall->hasNoNaNs());
+
+ FCall = Builder.CreateCall(V, None);
+ EXPECT_TRUE(Builder.getFastMathFlags().any());
+ EXPECT_TRUE(Builder.getFastMathFlags().NoNaNs);
+ EXPECT_TRUE(FCall->hasNoNaNs());
Builder.clearFastMathFlags();
More information about the llvm-commits
mailing list