Skip to content

Commit 13cf694

Browse files
committed
[DFAJumpThreading][NFC] Clear cleanPhiNodes and phi-related code
1 parent b256d0a commit 13cf694

File tree

1 file changed

+13
-22
lines changed

1 file changed

+13
-22
lines changed

llvm/lib/Transforms/Scalar/DFAJumpThreading.cpp

Lines changed: 13 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1195,19 +1195,18 @@ struct TransformDFA {
11951195
// value for the new predecessor ClonedBB. The value will either be the same
11961196
// value from BB or a cloned value.
11971197
for (BasicBlock *Succ : BlocksToUpdate) {
1198-
for (auto II = Succ->begin(); PHINode *Phi = dyn_cast<PHINode>(II);
1199-
++II) {
1200-
Value *Incoming = Phi->getIncomingValueForBlock(BB);
1198+
for (PHINode &Phi : Succ->phis()) {
1199+
Value *Incoming = Phi.getIncomingValueForBlock(BB);
12011200
if (Incoming) {
12021201
if (isa<Constant>(Incoming)) {
1203-
Phi->addIncoming(Incoming, ClonedBB);
1202+
Phi.addIncoming(Incoming, ClonedBB);
12041203
continue;
12051204
}
12061205
Value *ClonedVal = VMap[Incoming];
12071206
if (ClonedVal)
1208-
Phi->addIncoming(ClonedVal, ClonedBB);
1207+
Phi.addIncoming(ClonedVal, ClonedBB);
12091208
else
1210-
Phi->addIncoming(Incoming, ClonedBB);
1209+
Phi.addIncoming(Incoming, ClonedBB);
12111210
}
12121211
}
12131212
}
@@ -1302,27 +1301,19 @@ struct TransformDFA {
13021301
void cleanPhiNodes(BasicBlock *BB) {
13031302
// If BB is no longer reachable, remove any remaining phi nodes
13041303
if (pred_empty(BB)) {
1305-
std::vector<PHINode *> PhiToRemove;
1306-
for (auto II = BB->begin(); PHINode *Phi = dyn_cast<PHINode>(II); ++II) {
1307-
PhiToRemove.push_back(Phi);
1308-
}
1309-
for (PHINode *PN : PhiToRemove) {
1310-
PN->replaceAllUsesWith(PoisonValue::get(PN->getType()));
1311-
PN->eraseFromParent();
1304+
for (PHINode &PN : make_early_inc_range(BB->phis())) {
1305+
PN.replaceAllUsesWith(PoisonValue::get(PN.getType()));
1306+
PN.eraseFromParent();
13121307
}
13131308
return;
13141309
}
13151310

13161311
// Remove any incoming values that come from an invalid predecessor
1317-
for (auto II = BB->begin(); PHINode *Phi = dyn_cast<PHINode>(II); ++II) {
1318-
std::vector<BasicBlock *> BlocksToRemove;
1319-
for (BasicBlock *IncomingBB : Phi->blocks()) {
1320-
if (!isPredecessor(BB, IncomingBB))
1321-
BlocksToRemove.push_back(IncomingBB);
1322-
}
1323-
for (BasicBlock *BB : BlocksToRemove)
1324-
Phi->removeIncomingValue(BB);
1325-
}
1312+
for (PHINode &Phi : BB->phis())
1313+
Phi.removeIncomingValueIf([&](uint Index) {
1314+
BasicBlock *IncomingBB = Phi.getIncomingBlock(Index);
1315+
return !isPredecessor(BB, IncomingBB);
1316+
});
13261317
}
13271318

13281319
/// Checks if BB was already cloned for a particular next state value. If it

0 commit comments

Comments
 (0)