diff options
author | Fangrui Song <maskray@google.com> | 2019-04-14 07:20:03 +0000 |
---|---|---|
committer | Fangrui Song <maskray@google.com> | 2019-04-14 07:20:03 +0000 |
commit | e57c53df4fc649ed1d0209d13ebe5e553d7a816a (patch) | |
tree | 6867d05d9f56b4e0953253be796fd177a4fe6b6e /llvm/lib/Transforms | |
parent | f42990e687427005402d17e13931b1518f4e0e9c (diff) | |
download | bcm5719-llvm-e57c53df4fc649ed1d0209d13ebe5e553d7a816a.tar.gz bcm5719-llvm-e57c53df4fc649ed1d0209d13ebe5e553d7a816a.zip |
[Mem2Reg] Simplify and micro optimize
* Rearrange continu/break
* BBNumbers.lookup(A) -> BBNumbers.find(A)->second
BBNumbers has been computed, thus we can assume the value exists in the predicate.
llvm-svn: 358351
Diffstat (limited to 'llvm/lib/Transforms')
-rw-r--r-- | llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp b/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp index bdf1c209d59..4cdef6def01 100644 --- a/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp +++ b/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp @@ -606,8 +606,8 @@ void PromoteMem2Reg::run() { // dead phi nodes. // Unique the set of defining blocks for efficient lookup. - SmallPtrSet<BasicBlock *, 32> DefBlocks; - DefBlocks.insert(Info.DefiningBlocks.begin(), Info.DefiningBlocks.end()); + SmallPtrSet<BasicBlock *, 32> DefBlocks(Info.DefiningBlocks.begin(), + Info.DefiningBlocks.end()); // Determine which blocks the value is live in. These are blocks which lead // to uses. @@ -622,10 +622,9 @@ void PromoteMem2Reg::run() { IDF.setDefiningBlocks(DefBlocks); SmallVector<BasicBlock *, 32> PHIBlocks; IDF.calculate(PHIBlocks); - if (PHIBlocks.size() > 1) - llvm::sort(PHIBlocks, [this](BasicBlock *A, BasicBlock *B) { - return BBNumbers.lookup(A) < BBNumbers.lookup(B); - }); + llvm::sort(PHIBlocks, [this](BasicBlock *A, BasicBlock *B) { + return BBNumbers.find(A)->second < BBNumbers.find(B)->second; + }); unsigned CurrentVersion = 0; for (BasicBlock *BB : PHIBlocks) @@ -737,7 +736,7 @@ void PromoteMem2Reg::run() { // basic blocks. Start by sorting the incoming predecessors for efficient // access. auto CompareBBNumbers = [this](BasicBlock *A, BasicBlock *B) { - return BBNumbers.lookup(A) < BBNumbers.lookup(B); + return BBNumbers.find(A)->second < BBNumbers.find(B)->second; }; llvm::sort(Preds, CompareBBNumbers); @@ -810,14 +809,11 @@ void PromoteMem2Reg::ComputeLiveInBlocks( break; } - if (LoadInst *LI = dyn_cast<LoadInst>(I)) { - if (LI->getOperand(0) != AI) - continue; - + if (LoadInst *LI = dyn_cast<LoadInst>(I)) // Okay, we found a load before a store to the alloca. It is actually // live into this block. - break; - } + if (LI->getOperand(0) == AI) + break; } } |