Forward operands into implicit uses as well as explicit ones.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@808 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Vikram S. Adve 2001-10-14 23:28:43 +00:00
parent b847f51bc8
commit c025fc1083

View File

@ -290,7 +290,6 @@ ChooseMovpccAfterSub(const InstructionNode* instrNode,
return opCode;
}
static inline MachineOpCode
ChooseConvertToFloatInstr(const InstructionNode* instrNode,
const Type* opType)
@ -1277,7 +1276,8 @@ FixConstantOperands(const InstructionNode* vmInstrNode,
//
// Substitute operand `operandNum' of the instruction in node `treeNode'
// in place the use(s) of that instruction in node `parent'.
// in place of the use(s) of that instruction in node `parent'.
// Check both explicit and implicit operands!
//
static void
ForwardOperand(InstructionNode* treeNode,
@ -1302,7 +1302,8 @@ ForwardOperand(InstructionNode* treeNode,
for (unsigned i=0, N=mvec.size(); i < N; i++)
{
MachineInstr* minstr = mvec[i];
for (unsigned i=0, numOps=minstr->getNumOperands(); i < numOps; i++)
for (unsigned i=0, numOps=minstr->getNumOperands(); i < numOps; ++i)
{
const MachineOperand& mop = minstr->getOperand(i);
if (mop.getOperandType() == MachineOperand::MO_VirtualRegister &&
@ -1312,6 +1313,10 @@ ForwardOperand(InstructionNode* treeNode,
fwdOp);
}
}
for (unsigned i=0, numOps=minstr->getNumImplicitRefs(); i < numOps; ++i)
if (minstr->getImplicitRef(i) == unusedOp)
minstr->setImplicitRef(i, fwdOp, minstr->implicitRefIsDefined(i));
}
}