Use next() helper to make code more readable. Use

MachineFunction::iterator instead of MachineBasicBlock* to avoid
dereferencing end iterators.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15373 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Alkis Evlogimenos
2004-07-31 15:14:29 +00:00
parent dd04583781
commit 9fd332392c

View File

@@ -20,6 +20,7 @@
#include "llvm/CodeGen/MachineFunctionPass.h" #include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/Target/TargetInstrInfo.h" #include "llvm/Target/TargetInstrInfo.h"
#include "llvm/Target/TargetMachine.h" #include "llvm/Target/TargetMachine.h"
#include "Support/STLExtras.h"
using namespace llvm; using namespace llvm;
namespace { namespace {
@@ -113,7 +114,7 @@ bool BranchFolder::OptimizeBlock(MachineBasicBlock *MBB,
// explicitly. // explicitly.
if (MBB->empty()) { if (MBB->empty()) {
if (MBB->pred_empty()) return false; if (MBB->pred_empty()) return false;
MachineFunction::iterator FallThrough = MBB; ++FallThrough; MachineFunction::iterator FallThrough = next(MBB);
assert(FallThrough != MBB->getParent()->end() && assert(FallThrough != MBB->getParent()->end() &&
"Fell off the end of the function!"); "Fell off the end of the function!");
while (!MBB->pred_empty()) { while (!MBB->pred_empty()) {
@@ -138,7 +139,7 @@ bool BranchFolder::OptimizeBlock(MachineBasicBlock *MBB,
// If MBB does not end with a barrier, add a goto instruction to the end. // If MBB does not end with a barrier, add a goto instruction to the end.
if (Pred->empty() || !TII.isBarrier(Pred->back().getOpcode())) if (Pred->empty() || !TII.isBarrier(Pred->back().getOpcode()))
TII.insertGoto(*Pred, *++MachineFunction::iterator(MBB)); TII.insertGoto(*Pred, *next(MBB));
// Update the CFG now. // Update the CFG now.
Pred->removeSuccessor(Pred->succ_begin()); Pred->removeSuccessor(Pred->succ_begin());
@@ -170,7 +171,7 @@ bool BranchFolder::OptimizeBlock(MachineBasicBlock *MBB,
if (isUncondBranch(--MBB->end(), TII)) { if (isUncondBranch(--MBB->end(), TII)) {
MachineBasicBlock::iterator MI = --MBB->end(); MachineBasicBlock::iterator MI = --MBB->end();
MachineInstr *UncondBr = MI; MachineInstr *UncondBr = MI;
MachineFunction::iterator FallThrough = MBB; ++FallThrough; MachineFunction::iterator FallThrough = next(MBB);
MachineFunction::iterator UncondDest = MachineFunction::iterator UncondDest =
MI->getOperand(0).getMachineBasicBlock(); MI->getOperand(0).getMachineBasicBlock();
@@ -187,7 +188,8 @@ bool BranchFolder::OptimizeBlock(MachineBasicBlock *MBB,
// We assume that conditional branches always have the branch dest as the // We assume that conditional branches always have the branch dest as the
// last operand. This could be generalized in the future if needed. // last operand. This could be generalized in the future if needed.
unsigned LastOpnd = MI->getNumOperands()-1; unsigned LastOpnd = MI->getNumOperands()-1;
if (MI->getOperand(LastOpnd).getMachineBasicBlock() == &*FallThrough) { if (MachineFunction::iterator(
MI->getOperand(LastOpnd).getMachineBasicBlock()) == FallThrough) {
// Change the cond branch to go to the uncond dest, nuke the uncond, // Change the cond branch to go to the uncond dest, nuke the uncond,
// then reverse the condition. // then reverse the condition.
MI->getOperand(LastOpnd).setMachineBasicBlock(UncondDest); MI->getOperand(LastOpnd).setMachineBasicBlock(UncondDest);