mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-17 00:27:31 +00:00
Set register kill flags on the SelectionDAG path, at least in the
easy cases. llvm-svn: 102678
This commit is contained in:
parent
01254ea96d
commit
1534ad2d28
@ -296,8 +296,19 @@ InstrEmitter::AddRegisterOperand(MachineInstr *MI, SDValue Op,
|
||||
}
|
||||
}
|
||||
|
||||
// If this value has only one use, that use is a kill. This is a
|
||||
// conservative approximation. Tied operands are never killed, so we need
|
||||
// to check that. And that means we need to determine the index of the
|
||||
// operand.
|
||||
unsigned Idx = MI->getNumOperands();
|
||||
while (Idx > 0 &&
|
||||
MI->getOperand(Idx-1).isReg() && MI->getOperand(Idx-1).isImplicit())
|
||||
--Idx;
|
||||
bool isTied = MI->getDesc().getOperandConstraint(Idx, TOI::TIED_TO) != -1;
|
||||
bool isKill = Op.hasOneUse() && !isTied;
|
||||
|
||||
MI->addOperand(MachineOperand::CreateReg(VReg, isOptDef,
|
||||
false/*isImp*/, false/*isKill*/,
|
||||
false/*isImp*/, isKill,
|
||||
false/*isDead*/, false/*isUndef*/,
|
||||
false/*isEarlyClobber*/,
|
||||
0/*SubReg*/, IsDebug));
|
||||
|
Loading…
Reference in New Issue
Block a user