[llvm] r355362 - PHI nodes are not `FPMathOperator` s
Sanjoy Das via llvm-commits
llvm-commits at lists.llvm.org
Mon Mar 4 17:15:09 PST 2019
Author: sanjoy
Date: Mon Mar 4 17:15:08 2019
New Revision: 355362
URL: http://llvm.org/viewvc/llvm-project?rev=355362&view=rev
Log:
PHI nodes are not `FPMathOperator` s
Reviewers: chandlerc, arsenm
Reviewed By: arsenm
Subscribers: wdng, arsenm, mcrosier, jlebar, bixia, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D58887
Modified:
llvm/trunk/include/llvm/IR/Operator.h
llvm/trunk/lib/Analysis/IVDescriptors.cpp
llvm/trunk/unittests/IR/InstructionsTest.cpp
Modified: llvm/trunk/include/llvm/IR/Operator.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/Operator.h?rev=355362&r1=355361&r2=355362&view=diff
==============================================================================
--- llvm/trunk/include/llvm/IR/Operator.h (original)
+++ llvm/trunk/include/llvm/IR/Operator.h Mon Mar 4 17:15:08 2019
@@ -379,6 +379,7 @@ public:
case Instruction::ExtractElement:
case Instruction::ShuffleVector:
case Instruction::InsertElement:
+ case Instruction::PHI:
return false;
default:
return V->getType()->isFPOrFPVectorTy();
Modified: llvm/trunk/lib/Analysis/IVDescriptors.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/IVDescriptors.cpp?rev=355362&r1=355361&r2=355362&view=diff
==============================================================================
--- llvm/trunk/lib/Analysis/IVDescriptors.cpp (original)
+++ llvm/trunk/lib/Analysis/IVDescriptors.cpp Mon Mar 4 17:15:08 2019
@@ -549,9 +549,8 @@ RecurrenceDescriptor::isConditionalRdxPa
RecurrenceDescriptor::InstDesc
RecurrenceDescriptor::isRecurrenceInstr(Instruction *I, RecurrenceKind Kind,
InstDesc &Prev, bool HasFunNoNaNAttr) {
- bool FP = I->getType()->isFloatingPointTy();
Instruction *UAI = Prev.getUnsafeAlgebraInst();
- if (!UAI && FP && !I->isFast())
+ if (!UAI && isa<FPMathOperator>(I) && !I->isFast())
UAI = I; // Found an unsafe (unvectorizable) algebra instruction.
switch (I->getOpcode()) {
Modified: llvm/trunk/unittests/IR/InstructionsTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/IR/InstructionsTest.cpp?rev=355362&r1=355361&r2=355362&view=diff
==============================================================================
--- llvm/trunk/unittests/IR/InstructionsTest.cpp (original)
+++ llvm/trunk/unittests/IR/InstructionsTest.cpp Mon Mar 4 17:15:08 2019
@@ -993,5 +993,14 @@ TEST(InstructionsTest, SkipDebug) {
EXPECT_EQ(nullptr, Term->getNextNonDebugInstruction());
}
+TEST(InstructionsTest, PhiIsNotFPMathOperator) {
+ LLVMContext Context;
+ IRBuilder<> Builder(Context);
+ MDBuilder MDHelper(Context);
+ Instruction *I = Builder.CreatePHI(Builder.getDoubleTy(), 0);
+ EXPECT_FALSE(isa<FPMathOperator>(I));
+ I->deleteValue();
+}
+
} // end anonymous namespace
} // end namespace llvm
More information about the llvm-commits
mailing list