Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion llvm/include/llvm/Transforms/Utils/SSAUpdaterBulk.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@
#define LLVM_TRANSFORMS_UTILS_SSAUPDATERBULK_H

#include "llvm/ADT/StringRef.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/PredIteratorCache.h"
#include "llvm/Support/Compiler.h"

namespace llvm {

class BasicBlock;
class PHINode;
template <typename T> class SmallVectorImpl;
class Type;
Expand Down Expand Up @@ -84,6 +84,10 @@ class SSAUpdaterBulk {
LLVM_ABI_FOR_TEST void RewriteAndOptimizeAllUses(DominatorTree &DT);
};

LLVM_ABI_FOR_TEST bool
EliminateNewDuplicatePHINodes(BasicBlock *BB,
BasicBlock::phi_iterator FirstExistingPN);

} // end namespace llvm

#endif // LLVM_TRANSFORMS_UTILS_SSAUPDATERBULK_H
4 changes: 4 additions & 0 deletions llvm/lib/Transforms/Utils/SSAUpdaterBulk.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,8 @@ static bool replaceIfIdentical(PHINode &PHI, PHINode &ReplPHI) {
return true;
}

namespace llvm {

bool EliminateNewDuplicatePHINodes(BasicBlock *BB,
BasicBlock::phi_iterator FirstExistingPN) {
assert(!PHIAreRefEachOther(make_range(BB->phis().begin(), FirstExistingPN)));
Expand All @@ -293,6 +295,8 @@ bool EliminateNewDuplicatePHINodes(BasicBlock *BB,
return Changed;
}

} // end namespace llvm

static void deduplicatePass(ArrayRef<PHINode *> Worklist) {
SmallDenseMap<BasicBlock *, unsigned> BBs;
for (PHINode *PHI : Worklist) {
Expand Down
3 changes: 0 additions & 3 deletions llvm/unittests/Transforms/Utils/SSAUpdaterBulkTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -374,9 +374,6 @@ TEST(SSAUpdaterBulk, SimplifyPHIs) {
EXPECT_EQ(Phi, Cmp->getOperand(1));
}

bool EliminateNewDuplicatePHINodes(BasicBlock *BB,
BasicBlock::phi_iterator FirstExistingPN);

// Helper to run both versions on the same input.
static void RunEliminateNewDuplicatePHINode(
const char *AsmText,
Expand Down