forked from OSchip/llvm-project
[MachineBasicBlock] Use the const_cast(this) trick to reduce duplication
NFC. llvm-svn: 240413
This commit is contained in:
parent
4daa9f1e10
commit
9c956b33d7
|
@ -461,7 +461,9 @@ public:
|
|||
/// instruction of this basic block. If a terminator does not exist,
|
||||
/// it returns end()
|
||||
iterator getFirstTerminator();
|
||||
const_iterator getFirstTerminator() const;
|
||||
const_iterator getFirstTerminator() const {
|
||||
return const_cast<MachineBasicBlock *>(this)->getFirstTerminator();
|
||||
}
|
||||
|
||||
/// getFirstInstrTerminator - Same getFirstTerminator but it ignores bundles
|
||||
/// and return an instr_iterator instead.
|
||||
|
@ -470,7 +472,9 @@ public:
|
|||
/// getLastNonDebugInstr - returns an iterator to the last non-debug
|
||||
/// instruction in the basic block, or end()
|
||||
iterator getLastNonDebugInstr();
|
||||
const_iterator getLastNonDebugInstr() const;
|
||||
const_iterator getLastNonDebugInstr() const {
|
||||
return const_cast<MachineBasicBlock *>(this)->getLastNonDebugInstr();
|
||||
}
|
||||
|
||||
/// SplitCriticalEdge - Split the critical edge from this block to the
|
||||
/// given successor block, and return the newly created block, or null
|
||||
|
|
|
@ -171,16 +171,6 @@ MachineBasicBlock::iterator MachineBasicBlock::getFirstTerminator() {
|
|||
return I;
|
||||
}
|
||||
|
||||
MachineBasicBlock::const_iterator
|
||||
MachineBasicBlock::getFirstTerminator() const {
|
||||
const_iterator B = begin(), E = end(), I = E;
|
||||
while (I != B && ((--I)->isTerminator() || I->isDebugValue()))
|
||||
; /*noop */
|
||||
while (I != E && !I->isTerminator())
|
||||
++I;
|
||||
return I;
|
||||
}
|
||||
|
||||
MachineBasicBlock::instr_iterator MachineBasicBlock::getFirstInstrTerminator() {
|
||||
instr_iterator B = instr_begin(), E = instr_end(), I = E;
|
||||
while (I != B && ((--I)->isTerminator() || I->isDebugValue()))
|
||||
|
@ -204,21 +194,6 @@ MachineBasicBlock::iterator MachineBasicBlock::getLastNonDebugInstr() {
|
|||
return end();
|
||||
}
|
||||
|
||||
MachineBasicBlock::const_iterator
|
||||
MachineBasicBlock::getLastNonDebugInstr() const {
|
||||
// Skip over end-of-block dbg_value instructions.
|
||||
const_instr_iterator B = instr_begin(), I = instr_end();
|
||||
while (I != B) {
|
||||
--I;
|
||||
// Return instruction that starts a bundle.
|
||||
if (I->isDebugValue() || I->isInsideBundle())
|
||||
continue;
|
||||
return I;
|
||||
}
|
||||
// The block is all debug values.
|
||||
return end();
|
||||
}
|
||||
|
||||
const MachineBasicBlock *MachineBasicBlock::getLandingPadSuccessor() const {
|
||||
// A block with a landing pad successor only has one other successor.
|
||||
if (succ_size() > 2)
|
||||
|
|
Loading…
Reference in New Issue