From: Evgeny Stupachenko Date: Wed, 30 Nov 2016 22:23:51 +0000 (+0000) Subject: Fix LSR best register search algorithm. X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0c4300fac7e011c5b3072a005a68c4f8ce2e639f;p=platform%2Fupstream%2Fllvm.git 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 llvm-svn: 288278 --- diff --git a/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp b/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp index 2a378a4..a61f646 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;