diff options
author | Evgeny Stupachenko <evstupac@gmail.com> | 2016-11-30 22:23:51 +0000 |
---|---|---|
committer | Evgeny Stupachenko <evstupac@gmail.com> | 2016-11-30 22:23:51 +0000 |
commit | 0c4300fac7e011c5b3072a005a68c4f8ce2e639f (patch) | |
tree | 007aeef2beba78d123ac683609f108ebdc01d116 | |
parent | c52fe2961c63b659dddc09ed747f3c358961074a (diff) | |
download | bcm5719-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.cpp | 5 |
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; |