[llvm] [Transforms] Speed up SSAUpdater::FindExistingPHI (PR #100281)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 25 05:50:43 PDT 2024
================
@@ -413,26 +414,34 @@ class SSAUpdaterImpl {
/// FindExistingPHI - Look through the PHI nodes in a block to see if any of
/// them match what is needed.
void FindExistingPHI(BlkT *BB, BlockListTy *BlockList) {
+ SmallVector<BBInfo *, 20> TaggedBlocks;
for (auto &SomePHI : BB->phis()) {
- if (CheckIfPHIMatches(&SomePHI)) {
+ if (CheckIfPHIMatches(&SomePHI, TaggedBlocks)) {
RecordMatchingPHIs(BlockList);
break;
}
- // Match failed: clear all the PHITag values.
- for (typename BlockListTy::iterator I = BlockList->begin(),
- E = BlockList->end(); I != E; ++I)
- (*I)->PHITag = nullptr;
}
}
/// CheckIfPHIMatches - Check if a PHI node matches the placement and values
/// in the BBMap.
- bool CheckIfPHIMatches(PhiT *PHI) {
+ bool CheckIfPHIMatches(PhiT *PHI, SmallVector<BBInfo *, 20> &TaggedBlocks) {
+ // Match failed: clear all the PHITag values. Only need to clear visited
+ // blocks.
+ auto Cleanup = make_scope_exit([&]() {
+ for (BBInfo *TaggedBlock : TaggedBlocks) {
+ TaggedBlock->PHITag = nullptr;
+ }
----------------
nikic wrote:
Drop braces.
https://github.com/llvm/llvm-project/pull/100281
More information about the llvm-commits
mailing list