diff --git a/lib/CodeGen/MachineInstr.cpp b/lib/CodeGen/MachineInstr.cpp index 28fbd2d0048..91ee5123e19 100644 --- a/lib/CodeGen/MachineInstr.cpp +++ b/lib/CodeGen/MachineInstr.cpp @@ -98,12 +98,13 @@ MachineInstr::SetMachineOperandVal(unsigned i, operands[i].opType = opType; operands[i].value = V; operands[i].regNum = -1; - operands[i].flags = 0; - if (isdef || TargetInstrDescriptors[opCode].resultPos == (int) i) - operands[i].markDef(); if (isDefAndUse) - operands[i].markDefAndUse(); + operands[i].flags = MachineOperand::DEFUSEFLAG; + else if (isdef || TargetInstrDescriptors[opCode].resultPos == (int) i) + operands[i].flags = MachineOperand::DEFFLAG; + else + operands[i].flags = 0; } void @@ -131,10 +132,12 @@ MachineInstr::SetMachineOperandReg(unsigned i, operands[i].opType = MachineOperand::MO_MachineRegister; operands[i].value = NULL; operands[i].regNum = regNum; - operands[i].flags = 0; if (isdef || TargetInstrDescriptors[opCode].resultPos == (int) i) - operands[i].markDef(); + operands[i].flags = MachineOperand::DEFFLAG; + else + operands[i].flags = 0; + insertUsedReg(regNum); }