summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2015-06-16 14:57:29 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2015-06-16 14:57:29 +0000
commit1ee59cba5d90841a615d95195a972b3c24c7dc2b (patch)
treef2b74d31f940323d066c194663d9e756a617c9a1 /llvm/lib/Analysis
parent302275a938141ab1af7b7d73007ae2ad3bc802bc (diff)
downloadbcm5719-llvm-1ee59cba5d90841a615d95195a972b3c24c7dc2b.tar.gz
bcm5719-llvm-1ee59cba5d90841a615d95195a972b3c24c7dc2b.zip
[InstSimplify] Allow folding of fdiv X, X with just NaNs ignored
Any combination of +-inf/+-inf is NaN so it's already ignored with nnan and we can skip checking for ninf. Also rephrase logic in comments a bit. llvm-svn: 239821
Diffstat (limited to 'llvm/lib/Analysis')
-rw-r--r--llvm/lib/Analysis/InstructionSimplify.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/llvm/lib/Analysis/InstructionSimplify.cpp b/llvm/lib/Analysis/InstructionSimplify.cpp
index 8f7a940aa95..12e406bb1a2 100644
--- a/llvm/lib/Analysis/InstructionSimplify.cpp
+++ b/llvm/lib/Analysis/InstructionSimplify.cpp
@@ -1126,13 +1126,13 @@ static Value *SimplifyFDivInst(Value *Op0, Value *Op1, FastMathFlags FMF,
if (FMF.noNaNs() && FMF.noSignedZeros() && match(Op0, m_AnyZero()))
return Op0;
- if (FMF.noNaNs() && FMF.noInfs()) {
- // X / X -> 1.0 iff NaNs and infinities are ignored.
+ if (FMF.noNaNs()) {
+ // X / X -> 1.0 is legal when NaNs are ignored.
if (Op0 == Op1)
return ConstantFP::get(Op0->getType(), 1.0);
// -X / X -> -1.0 and
- // X / -X -> -1.0 iff NaNs and infinities are ignored.
+ // X / -X -> -1.0 are legal when NaNs are ignored.
// We can ignore signed zeros because +-0.0/+-0.0 is NaN and ignored.
if ((BinaryOperator::isFNeg(Op0, /*IgnoreZeroSign=*/true) &&
BinaryOperator::getFNegArgument(Op0) == Op1) ||
OpenPOWER on IntegriCloud