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)
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)