--added support for implicit operands

llvm-svn: 832
This commit is contained in:
Ruchira Sasanka 2001-10-15 16:58:50 +00:00
parent 2a6cc8300d
commit 82605b239c
1 changed files with 17 additions and 10 deletions

View File

@ -14,28 +14,35 @@ void LiveVarSet::applyTranferFuncForMInst(const MachineInstr *const MInst)
for( MachineInstr::val_op_const_iterator OpI(MInst); !OpI.done() ; OpI++) {
if( OpI.isDef() ) { // kill only if this operand is a def
if( OpI.isDef() ) // kill only if this operand is a def
remove(*OpI); // this definition kills any uses
}
}
// do for implicit operands as well
for( unsigned i=0; i < MInst->getNumImplicitRefs(); ++i) {
if( MInst->implicitRefIsDefined(i) )
remove( MInst->getImplicitRef(i) );
}
for( MachineInstr::val_op_const_iterator OpI(MInst); !OpI.done() ; OpI++) {
if ( ((*OpI)->getType())->isLabelType()) continue; // don't process labels
if( ! OpI.isDef() ) { // add only if this operand is a use
if( ! OpI.isDef() ) // add only if this operand is a use
add( *OpI ); // An operand is a use - so add to use set
}
}
// do for implicit operands as well
for( unsigned i=0; i < MInst->getNumImplicitRefs(); ++i) {
if( ! MInst->implicitRefIsDefined(i) )
add( MInst->getImplicitRef(i) );
}
}
#if 0
void LiveVarSet::applyTranferFuncForInst(const Instruction *const Inst)
{