Rename MachineInstr::getInstrDescriptor -> getDesc(), which reflects

that it is cheap and efficient to get.

Move a variety of predicates from TargetInstrInfo into 
TargetInstrDescriptor, which makes it much easier to query a predicate
when you don't have TII around.  Now you can use MI->getDesc()->isBranch()
instead of going through TII, and this is much more efficient anyway. Not
all of the predicates have been moved over yet.

Update old code that used MI->getInstrDescriptor()->Flags to use the
new predicates in many places.

llvm-svn: 45674
This commit is contained in:
Chris Lattner
2008-01-07 01:56:04 +00:00
parent 0ec92e9d64
commit a98c679de0
31 changed files with 154 additions and 226 deletions

View File

@@ -131,11 +131,10 @@ void ilist_traits<MachineInstr>::transferNodesFromList(
}
MachineBasicBlock::iterator MachineBasicBlock::getFirstTerminator() {
const TargetInstrInfo& TII = *getParent()->getTarget().getInstrInfo();
iterator I = end();
while (I != begin() && TII.isTerminatorInstr((--I)->getOpcode()))
while (I != begin() && (--I)->getDesc()->isTerminator())
; /*noop */
if (I != end() && !TII.isTerminatorInstr(I->getOpcode())) ++I;
if (I != end() && !I->getDesc()->isTerminator()) ++I;
return I;
}
@@ -262,7 +261,7 @@ void MachineBasicBlock::ReplaceUsesOfBlockWith(MachineBasicBlock *Old,
MachineBasicBlock::iterator I = end();
while (I != begin()) {
--I;
if (!(I->getInstrDescriptor()->Flags & M_TERMINATOR_FLAG)) break;
if (!I->getDesc()->isTerminator()) break;
// Scan the operands of this machine instruction, replacing any uses of Old
// with New.