summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/Hexagon/BitTracker.cpp
diff options
context:
space:
mode:
authorKrzysztof Parzyszek <kparzysz@codeaurora.org>2017-04-19 15:08:31 +0000
committerKrzysztof Parzyszek <kparzysz@codeaurora.org>2017-04-19 15:08:31 +0000
commit5bfaf56ee597daa11cb37e3b6e75c333083b050c (patch)
treee8cc62fb8966f3ffc18cedae9d0a202072d5a2ca /llvm/lib/Target/Hexagon/BitTracker.cpp
parentc9d36f181fe0f9f2685ae6ca4472223bad229c57 (diff)
downloadbcm5719-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.cpp10
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();
OpenPOWER on IntegriCloud