mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-19 11:02:59 +02:00
[NFC] Rename DontDeleteUselessPHIs --> KeepOneInputPHIs
llvm-svn: 353801
This commit is contained in:
parent
14f513ef20
commit
32ede157ac
@ -362,7 +362,7 @@ public:
|
||||
/// This is actually not used to update the Predecessor list, but is actually
|
||||
/// used to update the PHI nodes that reside in the block. Note that this
|
||||
/// should be called while the predecessor still refers to this block.
|
||||
void removePredecessor(BasicBlock *Pred, bool DontDeleteUselessPHIs = false);
|
||||
void removePredecessor(BasicBlock *Pred, bool KeepOneInputPHIs = false);
|
||||
|
||||
bool canSplitPredecessors() const;
|
||||
|
||||
|
@ -41,25 +41,25 @@ class Value;
|
||||
|
||||
/// Replace contents of every block in \p BBs with single unreachable
|
||||
/// instruction. If \p Updates is specified, collect all necessary DT updates
|
||||
/// into this vector. If \p DontDeleteUselessPHIs is true, one-input Phis in
|
||||
/// into this vector. If \p KeepOneInputPHIs is true, one-input Phis in
|
||||
/// successors of blocks being deleted will be preserved.
|
||||
void DetatchDeadBlocks(ArrayRef <BasicBlock *> BBs,
|
||||
SmallVectorImpl<DominatorTree::UpdateType> *Updates,
|
||||
bool DontDeleteUselessPHIs = false);
|
||||
bool KeepOneInputPHIs = false);
|
||||
|
||||
/// Delete the specified block, which must have no predecessors.
|
||||
void DeleteDeadBlock(BasicBlock *BB, DomTreeUpdater *DTU = nullptr,
|
||||
bool DontDeleteUselessPHIs = false);
|
||||
bool KeepOneInputPHIs = false);
|
||||
|
||||
/// Delete the specified blocks from \p BB. The set of deleted blocks must have
|
||||
/// no predecessors that are not being deleted themselves. \p BBs must have no
|
||||
/// duplicating blocks. If there are loops among this set of blocks, all
|
||||
/// relevant loop info updates should be done before this function is called.
|
||||
/// If \p DontDeleteUselessPHIs is true, one-input Phis in successors of blocks
|
||||
/// If \p KeepOneInputPHIs is true, one-input Phis in successors of blocks
|
||||
/// being deleted will be preserved.
|
||||
void DeleteDeadBlocks(ArrayRef <BasicBlock *> BBs,
|
||||
DomTreeUpdater *DTU = nullptr,
|
||||
bool DontDeleteUselessPHIs = false);
|
||||
bool KeepOneInputPHIs = false);
|
||||
|
||||
/// We know that BB has one predecessor. If there are any single-entry PHI nodes
|
||||
/// in it, fold them away. This handles the case when all entries to the PHI
|
||||
@ -106,7 +106,7 @@ struct CriticalEdgeSplittingOptions {
|
||||
LoopInfo *LI;
|
||||
MemorySSAUpdater *MSSAU;
|
||||
bool MergeIdenticalEdges = false;
|
||||
bool DontDeleteUselessPHIs = false;
|
||||
bool KeepOneInputPHIs = false;
|
||||
bool PreserveLCSSA = false;
|
||||
|
||||
CriticalEdgeSplittingOptions(DominatorTree *DT = nullptr,
|
||||
@ -119,8 +119,8 @@ struct CriticalEdgeSplittingOptions {
|
||||
return *this;
|
||||
}
|
||||
|
||||
CriticalEdgeSplittingOptions &setDontDeleteUselessPHIs() {
|
||||
DontDeleteUselessPHIs = true;
|
||||
CriticalEdgeSplittingOptions &setKeepOneInputPHIs() {
|
||||
KeepOneInputPHIs = true;
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
@ -299,7 +299,7 @@ iterator_range<BasicBlock::phi_iterator> BasicBlock::phis() {
|
||||
/// called while the predecessor still refers to this block.
|
||||
///
|
||||
void BasicBlock::removePredecessor(BasicBlock *Pred,
|
||||
bool DontDeleteUselessPHIs) {
|
||||
bool KeepOneInputPHIs) {
|
||||
assert((hasNUsesOrMore(16)||// Reduce cost of this assertion for complex CFGs.
|
||||
find(pred_begin(this), pred_end(this), Pred) != pred_end(this)) &&
|
||||
"removePredecessor: BB is not a predecessor!");
|
||||
@ -330,11 +330,11 @@ void BasicBlock::removePredecessor(BasicBlock *Pred,
|
||||
}
|
||||
|
||||
// <= Two predecessors BEFORE I remove one?
|
||||
if (max_idx <= 2 && !DontDeleteUselessPHIs) {
|
||||
if (max_idx <= 2 && !KeepOneInputPHIs) {
|
||||
// Yup, loop through and nuke the PHI nodes
|
||||
while (PHINode *PN = dyn_cast<PHINode>(&front())) {
|
||||
// Remove the predecessor first.
|
||||
PN->removeIncomingValue(Pred, !DontDeleteUselessPHIs);
|
||||
PN->removeIncomingValue(Pred, !KeepOneInputPHIs);
|
||||
|
||||
// If the PHI _HAD_ two uses, replace PHI node with its now *single* value
|
||||
if (max_idx == 2) {
|
||||
@ -359,7 +359,7 @@ void BasicBlock::removePredecessor(BasicBlock *Pred,
|
||||
// If all incoming values to the Phi are the same, we can replace the Phi
|
||||
// with that value.
|
||||
Value* PNV = nullptr;
|
||||
if (!DontDeleteUselessPHIs && (PNV = PN->hasConstantValue()))
|
||||
if (!KeepOneInputPHIs && (PNV = PN->hasConstantValue()))
|
||||
if (PNV != PN) {
|
||||
PN->replaceAllUsesWith(PNV);
|
||||
PN->eraseFromParent();
|
||||
|
@ -5292,7 +5292,7 @@ void LSRInstance::RewriteForPHI(
|
||||
NewBB = SplitCriticalEdge(BB, Parent,
|
||||
CriticalEdgeSplittingOptions(&DT, &LI)
|
||||
.setMergeIdenticalEdges()
|
||||
.setDontDeleteUselessPHIs());
|
||||
.setKeepOneInputPHIs());
|
||||
} else {
|
||||
SmallVector<BasicBlock*, 2> NewBBs;
|
||||
SplitLandingPadPredecessors(Parent, BB, "", "", NewBBs, &DT, &LI);
|
||||
|
@ -761,7 +761,7 @@ static bool unswitchTrivialSwitch(Loop &L, SwitchInst &SI, DominatorTree &DT,
|
||||
continue;
|
||||
}
|
||||
CommonSuccBB->removePredecessor(BB,
|
||||
/*DontDeleteUselessPHIs*/ true);
|
||||
/*KeepOneInputPHIs*/ true);
|
||||
}
|
||||
// Now nuke the switch and replace it with a direct branch.
|
||||
SI.eraseFromParent();
|
||||
@ -1069,7 +1069,7 @@ static BasicBlock *buildClonedLoopBlocks(
|
||||
continue;
|
||||
|
||||
ClonedSuccBB->removePredecessor(ClonedParentBB,
|
||||
/*DontDeleteUselessPHIs*/ true);
|
||||
/*KeepOneInputPHIs*/ true);
|
||||
}
|
||||
|
||||
// Replace the cloned branch with an unconditional branch to the cloned
|
||||
@ -2078,7 +2078,7 @@ static void unswitchNontrivialInvariants(
|
||||
"Only one possible unswitched block for a branch!");
|
||||
BasicBlock *UnswitchedSuccBB = *UnswitchedSuccBBs.begin();
|
||||
UnswitchedSuccBB->removePredecessor(ParentBB,
|
||||
/*DontDeleteUselessPHIs*/ true);
|
||||
/*KeepOneInputPHIs*/ true);
|
||||
DTUpdates.push_back({DominatorTree::Delete, ParentBB, UnswitchedSuccBB});
|
||||
} else {
|
||||
// Note that we actually want to remove the parent block as a predecessor
|
||||
@ -2093,7 +2093,7 @@ static void unswitchNontrivialInvariants(
|
||||
for (auto &Case : NewSI->cases())
|
||||
Case.getCaseSuccessor()->removePredecessor(
|
||||
ParentBB,
|
||||
/*DontDeleteUselessPHIs*/ true);
|
||||
/*KeepOneInputPHIs*/ true);
|
||||
|
||||
// We need to use the set to populate domtree updates as even when there
|
||||
// are multiple cases pointing at the same successor we only want to
|
||||
|
@ -50,13 +50,13 @@ using namespace llvm;
|
||||
void llvm::DetatchDeadBlocks(
|
||||
ArrayRef<BasicBlock *> BBs,
|
||||
SmallVectorImpl<DominatorTree::UpdateType> *Updates,
|
||||
bool DontDeleteUselessPHIs) {
|
||||
bool KeepOneInputPHIs) {
|
||||
for (auto *BB : BBs) {
|
||||
// Loop through all of our successors and make sure they know that one
|
||||
// of their predecessors is going away.
|
||||
SmallPtrSet<BasicBlock *, 4> UniqueSuccessors;
|
||||
for (BasicBlock *Succ : successors(BB)) {
|
||||
Succ->removePredecessor(BB, DontDeleteUselessPHIs);
|
||||
Succ->removePredecessor(BB, KeepOneInputPHIs);
|
||||
if (Updates && UniqueSuccessors.insert(Succ).second)
|
||||
Updates->push_back({DominatorTree::Delete, BB, Succ});
|
||||
}
|
||||
@ -82,12 +82,12 @@ void llvm::DetatchDeadBlocks(
|
||||
}
|
||||
|
||||
void llvm::DeleteDeadBlock(BasicBlock *BB, DomTreeUpdater *DTU,
|
||||
bool DontDeleteUselessPHIs) {
|
||||
DeleteDeadBlocks({BB}, DTU, DontDeleteUselessPHIs);
|
||||
bool KeepOneInputPHIs) {
|
||||
DeleteDeadBlocks({BB}, DTU, KeepOneInputPHIs);
|
||||
}
|
||||
|
||||
void llvm::DeleteDeadBlocks(ArrayRef <BasicBlock *> BBs, DomTreeUpdater *DTU,
|
||||
bool DontDeleteUselessPHIs) {
|
||||
bool KeepOneInputPHIs) {
|
||||
#ifndef NDEBUG
|
||||
// Make sure that all predecessors of each dead block is also dead.
|
||||
SmallPtrSet<BasicBlock *, 4> Dead(BBs.begin(), BBs.end());
|
||||
@ -98,7 +98,7 @@ void llvm::DeleteDeadBlocks(ArrayRef <BasicBlock *> BBs, DomTreeUpdater *DTU,
|
||||
#endif
|
||||
|
||||
SmallVector<DominatorTree::UpdateType, 4> Updates;
|
||||
DetatchDeadBlocks(BBs, DTU ? &Updates : nullptr, DontDeleteUselessPHIs);
|
||||
DetatchDeadBlocks(BBs, DTU ? &Updates : nullptr, KeepOneInputPHIs);
|
||||
|
||||
if (DTU)
|
||||
DTU->applyUpdates(Updates, /*ForceRemoveDuplicates*/ true);
|
||||
|
@ -192,7 +192,7 @@ llvm::SplitCriticalEdge(Instruction *TI, unsigned SuccNum,
|
||||
if (TI->getSuccessor(i) != DestBB) continue;
|
||||
|
||||
// Remove an entry for TIBB from DestBB phi nodes.
|
||||
DestBB->removePredecessor(TIBB, Options.DontDeleteUselessPHIs);
|
||||
DestBB->removePredecessor(TIBB, Options.KeepOneInputPHIs);
|
||||
|
||||
// We found another edge to DestBB, go to NewBB instead.
|
||||
TI->setSuccessor(i, NewBB);
|
||||
|
@ -662,9 +662,9 @@ ReprocessLoop:
|
||||
DT->eraseNode(ExitingBlock);
|
||||
|
||||
BI->getSuccessor(0)->removePredecessor(
|
||||
ExitingBlock, /* DontDeleteUselessPHIs */ PreserveLCSSA);
|
||||
ExitingBlock, /* KeepOneInputPHIs */ PreserveLCSSA);
|
||||
BI->getSuccessor(1)->removePredecessor(
|
||||
ExitingBlock, /* DontDeleteUselessPHIs */ PreserveLCSSA);
|
||||
ExitingBlock, /* KeepOneInputPHIs */ PreserveLCSSA);
|
||||
ExitingBlock->eraseFromParent();
|
||||
}
|
||||
}
|
||||
|
@ -3436,7 +3436,7 @@ static bool SimplifyTerminatorOnSelect(Instruction *OldTerm, Value *Cond,
|
||||
KeepEdge2 = nullptr;
|
||||
else
|
||||
Succ->removePredecessor(OldTerm->getParent(),
|
||||
/*DontDeleteUselessPHIs=*/true);
|
||||
/*KeepOneInputPHIs=*/true);
|
||||
}
|
||||
|
||||
IRBuilder<> Builder(OldTerm);
|
||||
@ -5433,7 +5433,7 @@ static bool SwitchToLookupTable(SwitchInst *SI, IRBuilder<> &Builder,
|
||||
// We cached PHINodes in PHIs. To avoid accessing deleted PHINodes later,
|
||||
// do not delete PHINodes here.
|
||||
SI->getDefaultDest()->removePredecessor(SI->getParent(),
|
||||
/*DontDeleteUselessPHIs=*/true);
|
||||
/*KeepOneInputPHIs=*/true);
|
||||
}
|
||||
|
||||
bool ReturnedEarly = false;
|
||||
|
Loading…
Reference in New Issue
Block a user