mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-19 08:24:12 +00:00
[ObjCARC] Convert an if to an early continue. NFC
This reduces nesting and makes the logic slightly easier to follow. Differential Revision: https://reviews.llvm.org/D46371 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@331422 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
034a688e82
commit
b9e51cf03e
@ -597,35 +597,35 @@ bool ObjCARCContract::runOnFunction(Function &F) {
|
||||
// trivially dominate itself, which would lead us to rewriting its
|
||||
// argument in terms of its return value, which would lead to
|
||||
// infinite loops in GetArgRCIdentityRoot.
|
||||
if (DT->isReachableFromEntry(U) && DT->dominates(Inst, U)) {
|
||||
Changed = true;
|
||||
Instruction *Replacement = Inst;
|
||||
Type *UseTy = U.get()->getType();
|
||||
if (PHINode *PHI = dyn_cast<PHINode>(U.getUser())) {
|
||||
// For PHI nodes, insert the bitcast in the predecessor block.
|
||||
unsigned ValNo = PHINode::getIncomingValueNumForOperand(OperandNo);
|
||||
BasicBlock *BB = PHI->getIncomingBlock(ValNo);
|
||||
if (Replacement->getType() != UseTy)
|
||||
Replacement = new BitCastInst(Replacement, UseTy, "",
|
||||
&BB->back());
|
||||
// While we're here, rewrite all edges for this PHI, rather
|
||||
// than just one use at a time, to minimize the number of
|
||||
// bitcasts we emit.
|
||||
for (unsigned i = 0, e = PHI->getNumIncomingValues(); i != e; ++i)
|
||||
if (PHI->getIncomingBlock(i) == BB) {
|
||||
// Keep the UI iterator valid.
|
||||
if (UI != UE &&
|
||||
&PHI->getOperandUse(
|
||||
PHINode::getOperandNumForIncomingValue(i)) == &*UI)
|
||||
++UI;
|
||||
PHI->setIncomingValue(i, Replacement);
|
||||
}
|
||||
} else {
|
||||
if (Replacement->getType() != UseTy)
|
||||
Replacement = new BitCastInst(Replacement, UseTy, "",
|
||||
cast<Instruction>(U.getUser()));
|
||||
U.set(Replacement);
|
||||
}
|
||||
if (!DT->isReachableFromEntry(U) || !DT->dominates(Inst, U))
|
||||
continue;
|
||||
|
||||
Changed = true;
|
||||
Instruction *Replacement = Inst;
|
||||
Type *UseTy = U.get()->getType();
|
||||
if (PHINode *PHI = dyn_cast<PHINode>(U.getUser())) {
|
||||
// For PHI nodes, insert the bitcast in the predecessor block.
|
||||
unsigned ValNo = PHINode::getIncomingValueNumForOperand(OperandNo);
|
||||
BasicBlock *BB = PHI->getIncomingBlock(ValNo);
|
||||
if (Replacement->getType() != UseTy)
|
||||
Replacement = new BitCastInst(Replacement, UseTy, "", &BB->back());
|
||||
// While we're here, rewrite all edges for this PHI, rather
|
||||
// than just one use at a time, to minimize the number of
|
||||
// bitcasts we emit.
|
||||
for (unsigned i = 0, e = PHI->getNumIncomingValues(); i != e; ++i)
|
||||
if (PHI->getIncomingBlock(i) == BB) {
|
||||
// Keep the UI iterator valid.
|
||||
if (UI != UE &&
|
||||
&PHI->getOperandUse(
|
||||
PHINode::getOperandNumForIncomingValue(i)) == &*UI)
|
||||
++UI;
|
||||
PHI->setIncomingValue(i, Replacement);
|
||||
}
|
||||
} else {
|
||||
if (Replacement->getType() != UseTy)
|
||||
Replacement = new BitCastInst(Replacement, UseTy, "",
|
||||
cast<Instruction>(U.getUser()));
|
||||
U.set(Replacement);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user