summaryrefslogtreecommitdiffstats
path: root/contrib/llvm/lib/Analysis
diff options
context:
space:
mode:
authordim <dim@FreeBSD.org>2016-01-27 22:48:52 +0000
committerdim <dim@FreeBSD.org>2016-01-27 22:48:52 +0000
commit2c8b37701007da0b1290d6550bc8cddadbb513fe (patch)
treed30c8f2261d23e1c3239fea725fc8c13416d10ff /contrib/llvm/lib/Analysis
parente94fcba08326e935f67bf7cefa2cf2e3c4cb4be5 (diff)
downloadFreeBSD-src-2c8b37701007da0b1290d6550bc8cddadbb513fe.zip
FreeBSD-src-2c8b37701007da0b1290d6550bc8cddadbb513fe.tar.gz
Update llvm, clang and lldb to release_38 branch r258968.
Diffstat (limited to 'contrib/llvm/lib/Analysis')
-rw-r--r--contrib/llvm/lib/Analysis/DemandedBits.cpp2
-rw-r--r--contrib/llvm/lib/Analysis/ScalarEvolution.cpp8
2 files changed, 9 insertions, 1 deletions
diff --git a/contrib/llvm/lib/Analysis/DemandedBits.cpp b/contrib/llvm/lib/Analysis/DemandedBits.cpp
index 912c5ce..143d0b7 100644
--- a/contrib/llvm/lib/Analysis/DemandedBits.cpp
+++ b/contrib/llvm/lib/Analysis/DemandedBits.cpp
@@ -244,7 +244,7 @@ void DemandedBits::determineLiveOperandBits(
break;
case Instruction::ICmp:
// Count the number of leading zeroes in each operand.
- ComputeKnownBits(BitWidth, I, UserI->getOperand(1));
+ ComputeKnownBits(BitWidth, UserI->getOperand(0), UserI->getOperand(1));
auto NumLeadingZeroes = std::min(KnownZero.countLeadingOnes(),
KnownZero2.countLeadingOnes());
AB = ~APInt::getHighBitsSet(BitWidth, NumLeadingZeroes);
diff --git a/contrib/llvm/lib/Analysis/ScalarEvolution.cpp b/contrib/llvm/lib/Analysis/ScalarEvolution.cpp
index 34074ef..ef1bb3a 100644
--- a/contrib/llvm/lib/Analysis/ScalarEvolution.cpp
+++ b/contrib/llvm/lib/Analysis/ScalarEvolution.cpp
@@ -5368,6 +5368,14 @@ ScalarEvolution::computeExitLimitFromCond(const Loop *L,
BECount = EL0.Exact;
}
+ // There are cases (e.g. PR26207) where computeExitLimitFromCond is able
+ // to be more aggressive when computing BECount than when computing
+ // MaxBECount. In these cases it is possible for EL0.Exact and EL1.Exact
+ // to match, but for EL0.Max and EL1.Max to not.
+ if (isa<SCEVCouldNotCompute>(MaxBECount) &&
+ !isa<SCEVCouldNotCompute>(BECount))
+ MaxBECount = BECount;
+
return ExitLimit(BECount, MaxBECount);
}
if (BO->getOpcode() == Instruction::Or) {
OpenPOWER on IntegriCloud