aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/UnreachableBlockElim.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/CodeGen/UnreachableBlockElim.cpp')
-rw-r--r--llvm/lib/CodeGen/UnreachableBlockElim.cpp14
1 files changed, 2 insertions, 12 deletions
diff --git a/llvm/lib/CodeGen/UnreachableBlockElim.cpp b/llvm/lib/CodeGen/UnreachableBlockElim.cpp
index 512e83d..cf8c1a7 100644
--- a/llvm/lib/CodeGen/UnreachableBlockElim.cpp
+++ b/llvm/lib/CodeGen/UnreachableBlockElim.cpp
@@ -22,6 +22,7 @@
#include "llvm/CodeGen/UnreachableBlockElim.h"
#include "llvm/ADT/DepthFirstIterator.h"
#include "llvm/ADT/SmallPtrSet.h"
+#include "llvm/CodeGen/MachineBasicBlock.h"
#include "llvm/CodeGen/MachineDominators.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
@@ -155,18 +156,7 @@ bool UnreachableMachineBlockElim::run(MachineFunction &F) {
if (MDT && MDT->getNode(&BB)) MDT->eraseNode(&BB);
while (!BB.succ_empty()) {
- MachineBasicBlock* succ = *BB.succ_begin();
-
- for (MachineInstr &Phi : succ->phis()) {
- for (unsigned i = Phi.getNumOperands() - 1; i >= 2; i -= 2) {
- if (Phi.getOperand(i).isMBB() &&
- Phi.getOperand(i).getMBB() == &BB) {
- Phi.removeOperand(i);
- Phi.removeOperand(i - 1);
- }
- }
- }
-
+ (*BB.succ_begin())->removePHIsIncomingValuesForPredecessor(BB);
BB.removeSuccessor(BB.succ_begin());
}
}