diff options
author | Daniel Berlin <dberlin@dberlin.org> | 2017-05-19 19:01:24 +0000 |
---|---|---|
committer | Daniel Berlin <dberlin@dberlin.org> | 2017-05-19 19:01:24 +0000 |
commit | ff15200b1d36f76059e966eb3abe3cf7abb37898 (patch) | |
tree | a2b2704c50d9af3b2d649b7ce1bab2f70521ec53 /llvm/lib/Transforms | |
parent | a5130bbd12a701fb8aaa10711c5c21da80ecb3ce (diff) | |
download | bcm5719-llvm-ff15200b1d36f76059e966eb3abe3cf7abb37898.tar.gz bcm5719-llvm-ff15200b1d36f76059e966eb3abe3cf7abb37898.zip |
NewGVN: Get rid of most dominating leader check
llvm-svn: 303443
Diffstat (limited to 'llvm/lib/Transforms')
-rw-r--r-- | llvm/lib/Transforms/Scalar/NewGVN.cpp | 26 |
1 files changed, 2 insertions, 24 deletions
diff --git a/llvm/lib/Transforms/Scalar/NewGVN.cpp b/llvm/lib/Transforms/Scalar/NewGVN.cpp index 4b6a2fd7fda..4cca61003b6 100644 --- a/llvm/lib/Transforms/Scalar/NewGVN.cpp +++ b/llvm/lib/Transforms/Scalar/NewGVN.cpp @@ -104,8 +104,6 @@ STATISTIC(NumGVNLeaderChanges, "Number of leader changes"); STATISTIC(NumGVNSortedLeaderChanges, "Number of sorted leader changes"); STATISTIC(NumGVNAvoidedSortedLeaderChanges, "Number of avoided sorted leader changes"); -STATISTIC(NumGVNNotMostDominatingLeader, - "Number of times a member dominated it's new classes' leader"); STATISTIC(NumGVNDeadStores, "Number of redundant/dead stores eliminated"); DEBUG_COUNTER(VNCounter, "newgvn-vn", "Controls which instructions are value numbered") @@ -1946,31 +1944,11 @@ void NewGVN::moveValueToNewCongruenceClass(Instruction *I, const Expression *E, if (I == OldClass->getNextLeader().first) OldClass->resetNextLeader(); - // It's possible, though unlikely, for us to discover equivalences such - // that the current leader does not dominate the old one. - // This statistic tracks how often this happens. - // We assert on phi nodes when this happens, currently, for debugging, because - // we want to make sure we name phi node cycles properly. - if (isa<Instruction>(NewClass->getLeader()) && NewClass->getLeader() && - I != NewClass->getLeader()) { - auto *IBB = I->getParent(); - auto *NCBB = cast<Instruction>(NewClass->getLeader())->getParent(); - bool Dominated = - IBB == NCBB && InstrToDFSNum(I) < InstrToDFSNum(NewClass->getLeader()); - Dominated = Dominated || DT->properlyDominates(IBB, NCBB); - if (Dominated) { - ++NumGVNNotMostDominatingLeader; - assert( - !isa<PHINode>(I) && - "New class for instruction should not be dominated by instruction"); - } - } + OldClass->erase(I); + NewClass->insert(I); if (NewClass->getLeader() != I) NewClass->addPossibleNextLeader({I, InstrToDFSNum(I)}); - - OldClass->erase(I); - NewClass->insert(I); // Handle our special casing of stores. if (auto *SI = dyn_cast<StoreInst>(I)) { OldClass->decStoreCount(); |