diff options
author | Roman Lebedev <lebedev.ri@gmail.com> | 2021-03-24 23:36:33 +0300 |
---|---|---|
committer | Roman Lebedev <lebedev.ri@gmail.com> | 2021-03-25 00:02:37 +0300 |
commit | 2070fe7144fcf76f0800c423c11882c9b872da6c (patch) | |
tree | 02e9a65ac8c1a8ee5f957e52f508cfd2311f7ecf /llvm/lib/Transforms/Utils/Local.cpp | |
parent | 56e6eb797599b3da0cf22a4e2cd293b76cb08c60 (diff) | |
download | llvm-2070fe7144fcf76f0800c423c11882c9b872da6c.zip llvm-2070fe7144fcf76f0800c423c11882c9b872da6c.tar.gz llvm-2070fe7144fcf76f0800c423c11882c9b872da6c.tar.bz2 |
[NFCI][SimplifyCFG] Don't form DTU updates if we aren't going to apply them
I think we may want to have a thin wrapper over a vector to deduplicate
those `if(DTU)` predicates, and instead do them in the `insert()` itself.
Diffstat (limited to 'llvm/lib/Transforms/Utils/Local.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/Local.cpp | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/llvm/lib/Transforms/Utils/Local.cpp b/llvm/lib/Transforms/Utils/Local.cpp index e1ea7c8..5b3472c 100644 --- a/llvm/lib/Transforms/Utils/Local.cpp +++ b/llvm/lib/Transforms/Utils/Local.cpp @@ -2403,22 +2403,25 @@ static bool markAliveBlocks(Function &F, E = CatchSwitch->handler_end(); I != E; ++I) { BasicBlock *HandlerBB = *I; - ++NumPerSuccessorCases[HandlerBB]; + if (DTU) + ++NumPerSuccessorCases[HandlerBB]; auto *CatchPad = cast<CatchPadInst>(HandlerBB->getFirstNonPHI()); if (!HandlerSet.insert({CatchPad, Empty}).second) { - --NumPerSuccessorCases[HandlerBB]; + if (DTU) + --NumPerSuccessorCases[HandlerBB]; CatchSwitch->removeHandler(I); --I; --E; Changed = true; } } - std::vector<DominatorTree::UpdateType> Updates; - for (const std::pair<BasicBlock *, int> &I : NumPerSuccessorCases) - if (I.second == 0) - Updates.push_back({DominatorTree::Delete, BB, I.first}); - if (DTU) + if (DTU) { + std::vector<DominatorTree::UpdateType> Updates; + for (const std::pair<BasicBlock *, int> &I : NumPerSuccessorCases) + if (I.second == 0) + Updates.push_back({DominatorTree::Delete, BB, I.first}); DTU->applyUpdates(Updates); + } } Changed |= ConstantFoldTerminator(BB, true, nullptr, DTU); |