diff options
author | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2017-04-19 15:08:31 +0000 |
---|---|---|
committer | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2017-04-19 15:08:31 +0000 |
commit | 5bfaf56ee597daa11cb37e3b6e75c333083b050c (patch) | |
tree | e8cc62fb8966f3ffc18cedae9d0a202072d5a2ca /llvm/lib/Target/Hexagon/BitTracker.cpp | |
parent | c9d36f181fe0f9f2685ae6ca4472223bad229c57 (diff) | |
download | bcm5719-llvm-5bfaf56ee597daa11cb37e3b6e75c333083b050c.tar.gz bcm5719-llvm-5bfaf56ee597daa11cb37e3b6e75c333083b050c.zip |
[Hexagon] Cache reached blocks in bit tracker instead of scanning list
llvm-svn: 300701
Diffstat (limited to 'llvm/lib/Target/Hexagon/BitTracker.cpp')
-rw-r--r-- | llvm/lib/Target/Hexagon/BitTracker.cpp | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/llvm/lib/Target/Hexagon/BitTracker.cpp b/llvm/lib/Target/Hexagon/BitTracker.cpp index 61d3630ac09..cb3049bf150 100644 --- a/llvm/lib/Target/Hexagon/BitTracker.cpp +++ b/llvm/lib/Target/Hexagon/BitTracker.cpp @@ -1011,12 +1011,7 @@ void BT::subst(RegisterRef OldRR, RegisterRef NewRR) { bool BT::reached(const MachineBasicBlock *B) const { int BN = B->getNumber(); assert(BN >= 0); - for (EdgeSetType::iterator I = EdgeExec.begin(), E = EdgeExec.end(); - I != E; ++I) { - if (I->second == BN) - return true; - } - return false; + return ReachedBB.count(BN); } // Visit an individual instruction. This could be a newly added instruction, @@ -1036,6 +1031,8 @@ void BT::reset() { EdgeExec.clear(); InstrExec.clear(); Map.clear(); + ReachedBB.clear(); + ReachedBB.reserve(MF.size()); } void BT::run() { @@ -1068,6 +1065,7 @@ void BT::run() { if (EdgeExec.count(Edge)) continue; EdgeExec.insert(Edge); + ReachedBB.insert(Edge.second); const MachineBasicBlock &B = *MF.getBlockNumbered(Edge.second); MachineBasicBlock::const_iterator It = B.begin(), End = B.end(); |