diff options
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Analysis/InstructionSimplify.cpp | 3 | ||||
-rw-r--r-- | llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp | 4 |
2 files changed, 3 insertions, 4 deletions
diff --git a/llvm/lib/Analysis/InstructionSimplify.cpp b/llvm/lib/Analysis/InstructionSimplify.cpp index 7fc7c15a0c2..b1601bfe1b2 100644 --- a/llvm/lib/Analysis/InstructionSimplify.cpp +++ b/llvm/lib/Analysis/InstructionSimplify.cpp @@ -4764,6 +4764,9 @@ static Value *simplifyBinaryIntrinsic(Function *F, Value *Op0, Value *Op1, break; case Intrinsic::maxnum: case Intrinsic::minnum: + // If the arguments are the same, this is a no-op. + if (Op0 == Op1) return Op0; + // If one argument is NaN, return the other argument. if (match(Op0, m_NaN())) return Op1; if (match(Op1, m_NaN())) return Op0; diff --git a/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp b/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp index cbfbd8a5399..77c5a06ee11 100644 --- a/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp +++ b/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp @@ -1137,10 +1137,6 @@ static Value *simplifyMinnumMaxnum(const IntrinsicInst &II) { Value *Arg0 = II.getArgOperand(0); Value *Arg1 = II.getArgOperand(1); - // fmin(x, x) -> x - if (Arg0 == Arg1) - return Arg0; - const auto *C1 = dyn_cast<ConstantFP>(Arg1); // fmin(x, nan) -> x |