mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-06 06:33:24 +00:00
--added support for implicit operands
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@832 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a90e77061d
commit
b8354a8e4f
@ -14,28 +14,35 @@ void LiveVarSet::applyTranferFuncForMInst(const MachineInstr *const MInst)
|
|||||||
|
|
||||||
for( MachineInstr::val_op_const_iterator OpI(MInst); !OpI.done() ; OpI++) {
|
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
|
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++) {
|
for( MachineInstr::val_op_const_iterator OpI(MInst); !OpI.done() ; OpI++) {
|
||||||
|
|
||||||
if ( ((*OpI)->getType())->isLabelType()) continue; // don't process labels
|
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
|
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
|
#if 0
|
||||||
void LiveVarSet::applyTranferFuncForInst(const Instruction *const Inst)
|
void LiveVarSet::applyTranferFuncForInst(const Instruction *const Inst)
|
||||||
{
|
{
|
||||||
|
@ -14,28 +14,35 @@ void LiveVarSet::applyTranferFuncForMInst(const MachineInstr *const MInst)
|
|||||||
|
|
||||||
for( MachineInstr::val_op_const_iterator OpI(MInst); !OpI.done() ; OpI++) {
|
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
|
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++) {
|
for( MachineInstr::val_op_const_iterator OpI(MInst); !OpI.done() ; OpI++) {
|
||||||
|
|
||||||
if ( ((*OpI)->getType())->isLabelType()) continue; // don't process labels
|
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
|
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
|
#if 0
|
||||||
void LiveVarSet::applyTranferFuncForInst(const Instruction *const Inst)
|
void LiveVarSet::applyTranferFuncForInst(const Instruction *const Inst)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user