mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-24 23:28:41 +00:00
Fix pr3954. The register scavenger asserts for inline assembly with
register destinations that are tied to source operands. The TargetInstrDescr::findTiedToSrcOperand method silently fails for inline assembly. The existing MachineInstr::isRegReDefinedByTwoAddr was very close to doing what is needed, so this revision makes a few changes to that method and also renames it to isRegTiedToUseOperand (for consistency with the very similar isRegTiedToDefOperand and because it handles both two-address instructions and inline assembly with tied registers). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68714 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -241,9 +241,11 @@ public:
|
||||
/// none is found.
|
||||
int findFirstPredOperandIdx() const;
|
||||
|
||||
/// isRegReDefinedByTwoAddr - Given the index of a register def operand,
|
||||
/// check if the register def is a re-definition due to two addr elimination.
|
||||
bool isRegReDefinedByTwoAddr(unsigned DefIdx) const;
|
||||
/// isRegTiedToUseOperand - Given the index of a register def operand,
|
||||
/// check if the register def is tied to a source operand, due to either
|
||||
/// two-address elimination or inline assembly constraints. Returns the
|
||||
/// first tied use operand index by reference is UseOpIdx is not null.
|
||||
bool isRegTiedToUseOperand(unsigned DefOpIdx, unsigned *UseOpIdx = 0);
|
||||
|
||||
/// isRegTiedToDefOperand - Return true if the use operand of the specified
|
||||
/// index is tied to an def operand. It also returns the def operand index by
|
||||
|
Reference in New Issue
Block a user