mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
When folding memory operands in machine instructions be careful to
leave register operands with the same use/def flags as the original instruction. llvm-svn: 11709
This commit is contained in:
parent
a3f44e7098
commit
6998610eda
@ -197,6 +197,13 @@ public:
|
||||
///
|
||||
MachineOperandType getType() const { return opType; }
|
||||
|
||||
/// getUseType - Returns the MachineOperandUseType of this operand.
|
||||
///
|
||||
MOTy::UseType getUseType() const {
|
||||
return isUse() ^ isDef() ? MOTy::UseAndDef :
|
||||
(isUse() ? MOTy::Use : MOTy::Def);
|
||||
}
|
||||
|
||||
/// isPCRelative - This returns the value of the PCRELATIVE flag, which
|
||||
/// indicates whether this operand should be emitted as a PC relative value
|
||||
/// instead of a global address. This is used for operands of the forms:
|
||||
|
@ -112,13 +112,15 @@ static MachineInstr *MakeMIInst(unsigned Opcode, unsigned FrameIndex,
|
||||
|
||||
static MachineInstr *MakeRMInst(unsigned Opcode, unsigned FrameIndex,
|
||||
MachineInstr *MI) {
|
||||
return addFrameReference(BuildMI(Opcode, 5, MI->getOperand(0).getReg()),
|
||||
const MachineOperand& op = MI->getOperand(0);
|
||||
return addFrameReference(BuildMI(Opcode, 5, op.getReg(), op.getUseType()),
|
||||
FrameIndex);
|
||||
}
|
||||
|
||||
static MachineInstr *MakeRMIInst(unsigned Opcode, unsigned FrameIndex,
|
||||
MachineInstr *MI) {
|
||||
return addFrameReference(BuildMI(Opcode, 5, MI->getOperand(0).getReg()),
|
||||
const MachineOperand& op = MI->getOperand(0);
|
||||
return addFrameReference(BuildMI(Opcode, 5, op.getReg(), op.getUseType()),
|
||||
FrameIndex).addZImm(MI->getOperand(2).getImmedValue());
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user