diff options
| author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2012-08-31 20:50:53 +0000 | 
|---|---|---|
| committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2012-08-31 20:50:53 +0000 | 
| commit | 94083149fd6891c8a72472cf1814fa6600a75979 (patch) | |
| tree | 789b62b2c8d309986e5ce08490b80464556971b4 /include | |
| parent | 265bcb1e5b106a7c5db2bfcfb13cceffe0c413be (diff) | |
| download | external_llvm-94083149fd6891c8a72472cf1814fa6600a75979.zip external_llvm-94083149fd6891c8a72472cf1814fa6600a75979.tar.gz external_llvm-94083149fd6891c8a72472cf1814fa6600a75979.tar.bz2  | |
Add MachineInstr::tieOperands, remove setIsTied().
Manage tied operands entirely internally to MachineInstr. This makes it
possible to change the representation of tied operands, as I will do
shortly.
The constraint that tied uses and defs must be in the same order was too
restrictive.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163021 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
| -rw-r--r-- | include/llvm/CodeGen/MachineInstr.h | 16 | ||||
| -rw-r--r-- | include/llvm/CodeGen/MachineOperand.h | 5 | 
2 files changed, 13 insertions, 8 deletions
diff --git a/include/llvm/CodeGen/MachineInstr.h b/include/llvm/CodeGen/MachineInstr.h index d636dfd..67ae3f9 100644 --- a/include/llvm/CodeGen/MachineInstr.h +++ b/include/llvm/CodeGen/MachineInstr.h @@ -782,6 +782,14 @@ public:                          const TargetInstrInfo *TII,                          const TargetRegisterInfo *TRI) const; +  /// tieOperands - Add a tie between the register operands at DefIdx and +  /// UseIdx. The tie will cause the register allocator to ensure that the two +  /// operands are assigned the same physical register. +  /// +  /// Tied operands are managed automatically for explicit operands in the +  /// MCInstrDesc. This method is for exceptional cases like inline asm. +  void tieOperands(unsigned DefIdx, unsigned UseIdx); +    /// findTiedOperandIdx - Given the index of a tied register operand, find the    /// operand it is tied to. Defs are tied to uses and vice versa. Returns the    /// index of the tied operand which must exist. @@ -942,9 +950,11 @@ private:    /// untieRegOperand - Break any tie involving OpIdx.    void untieRegOperand(unsigned OpIdx) { -    const MachineOperand &MO = getOperand(OpIdx); -    if (MO.isReg() && MO.isTied()) -      getOperand(findTiedOperandIdx(OpIdx)).setIsTied(false); +    MachineOperand &MO = getOperand(OpIdx); +    if (MO.isReg() && MO.isTied()) { +      getOperand(findTiedOperandIdx(OpIdx)).IsTied = false; +      MO.IsTied = false; +    }    }    /// addImplicitDefUseOperands - Add all implicit def and use operands to diff --git a/include/llvm/CodeGen/MachineOperand.h b/include/llvm/CodeGen/MachineOperand.h index 594dc27..baec882 100644 --- a/include/llvm/CodeGen/MachineOperand.h +++ b/include/llvm/CodeGen/MachineOperand.h @@ -390,11 +390,6 @@ public:      IsEarlyClobber = Val;    } -  void setIsTied(bool Val = true) { -    assert(isReg() && "Wrong MachineOperand accessor"); -    IsTied = Val; -  } -    void setIsDebug(bool Val = true) {      assert(isReg() && IsDef && "Wrong MachineOperand accessor");      IsDebug = Val;  | 
