diff options
| author | Benjamin Kramer <benny.kra@googlemail.com> | 2015-02-07 16:41:12 +0000 | 
|---|---|---|
| committer | Benjamin Kramer <benny.kra@googlemail.com> | 2015-02-07 16:41:12 +0000 | 
| commit | d7e331e0f9a1173ae320a3829105b54658fef453 (patch) | |
| tree | 44819e616b92b83d53f0fcce7472f41bddbef6ad /llvm/lib | |
| parent | 1d563f40da16d8858a03da8f5d99989eb636c572 (diff) | |
| download | bcm5719-llvm-d7e331e0f9a1173ae320a3829105b54658fef453.tar.gz bcm5719-llvm-d7e331e0f9a1173ae320a3829105b54658fef453.zip  | |
SCEV: Compress disposition pairs.
Composing DenseMaps and SmallVectors is still somewhat suboptimal,
but this at least halves the size of the vector elements. NFC.
llvm-svn: 228497
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Analysis/ScalarEvolution.cpp | 36 | 
1 files changed, 18 insertions, 18 deletions
diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp index 510523ec60a..9b9e7dc5eea 100644 --- a/llvm/lib/Analysis/ScalarEvolution.cpp +++ b/llvm/lib/Analysis/ScalarEvolution.cpp @@ -8000,17 +8000,17 @@ void ScalarEvolution::print(raw_ostream &OS, const Module *) const {  ScalarEvolution::LoopDisposition  ScalarEvolution::getLoopDisposition(const SCEV *S, const Loop *L) { -  SmallVector<std::pair<const Loop *, LoopDisposition>, 2> &Values = LoopDispositions[S]; -  for (unsigned u = 0; u < Values.size(); u++) { -    if (Values[u].first == L) -      return Values[u].second; +  auto &Values = LoopDispositions[S]; +  for (auto &V : Values) { +    if (V.getPointer() == L) +      return V.getInt();    } -  Values.push_back(std::make_pair(L, LoopVariant)); +  Values.emplace_back(L, LoopVariant);    LoopDisposition D = computeLoopDisposition(S, L); -  SmallVector<std::pair<const Loop *, LoopDisposition>, 2> &Values2 = LoopDispositions[S]; -  for (unsigned u = Values2.size(); u > 0; u--) { -    if (Values2[u - 1].first == L) { -      Values2[u - 1].second = D; +  auto &Values2 = LoopDispositions[S]; +  for (auto &V : make_range(Values2.rbegin(), Values2.rend())) { +    if (V.getPointer() == L) { +      V.setInt(D);        break;      }    } @@ -8106,17 +8106,17 @@ bool ScalarEvolution::hasComputableLoopEvolution(const SCEV *S, const Loop *L) {  ScalarEvolution::BlockDisposition  ScalarEvolution::getBlockDisposition(const SCEV *S, const BasicBlock *BB) { -  SmallVector<std::pair<const BasicBlock *, BlockDisposition>, 2> &Values = BlockDispositions[S]; -  for (unsigned u = 0; u < Values.size(); u++) { -    if (Values[u].first == BB) -      return Values[u].second; +  auto &Values = BlockDispositions[S]; +  for (auto &V : Values) { +    if (V.getPointer() == BB) +      return V.getInt();    } -  Values.push_back(std::make_pair(BB, DoesNotDominateBlock)); +  Values.emplace_back(BB, DoesNotDominateBlock);    BlockDisposition D = computeBlockDisposition(S, BB); -  SmallVector<std::pair<const BasicBlock *, BlockDisposition>, 2> &Values2 = BlockDispositions[S]; -  for (unsigned u = Values2.size(); u > 0; u--) { -    if (Values2[u - 1].first == BB) { -      Values2[u - 1].second = D; +  auto &Values2 = BlockDispositions[S]; +  for (auto &V : make_range(Values2.rbegin(), Values2.rend())) { +    if (V.getPointer() == BB) { +      V.setInt(D);        break;      }    }  | 

