summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEvgeny Stupachenko <evstupac@gmail.com>2016-11-30 22:23:51 +0000
committerEvgeny Stupachenko <evstupac@gmail.com>2016-11-30 22:23:51 +0000
commit0c4300fac7e011c5b3072a005a68c4f8ce2e639f (patch)
tree007aeef2beba78d123ac683609f108ebdc01d116
parentc52fe2961c63b659dddc09ed747f3c358961074a (diff)
downloadbcm5719-llvm-0c4300fac7e011c5b3072a005a68c4f8ce2e639f.tar.gz
bcm5719-llvm-0c4300fac7e011c5b3072a005a68c4f8ce2e639f.zip
Fix LSR best register search algorithm.
Summary: Fix a case when first register in a search has maximum RegUses.getUsedByIndices(Reg).count() Reviewers: qcolombet Differential Revision: http://reviews.llvm.org/D26877 From: Evgeny Stupachenko <evstupac@gmail.com> llvm-svn: 288278
-rw-r--r--llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp b/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
index 2a378a43728..a61f646042a 100644
--- a/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
+++ b/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
@@ -4178,9 +4178,10 @@ void LSRInstance::NarrowSearchSpaceByPickingWinnerRegs() {
for (const SCEV *Reg : RegUses) {
if (Taken.count(Reg))
continue;
- if (!Best)
+ if (!Best) {
Best = Reg;
- else {
+ BestNum = RegUses.getUsedByIndices(Reg).count();
+ } else {
unsigned Count = RegUses.getUsedByIndices(Reg).count();
if (Count > BestNum) {
Best = Reg;
OpenPOWER on IntegriCloud