mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-13 04:38:24 +00:00
Simplify LiveDebugVariables by storing MachineOperand copies locations instead
of using a Location class with the same information. When making a copy of a MachineOperand that was already stored in a MachineInstr, it is necessary to clear the parent pointer on the copy. Otherwise the register use-def lists become inconsistent. Add MachineOperand::clearParent() to do that. An alternative would be a custom MachineOperand copy constructor that cleared ParentMI. I didn't want to do that because of the performance impact. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123109 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -153,6 +153,16 @@ public:
|
||||
MachineInstr *getParent() { return ParentMI; }
|
||||
const MachineInstr *getParent() const { return ParentMI; }
|
||||
|
||||
/// clearParent - Reset the parent pointer.
|
||||
///
|
||||
/// The MachineOperand copy constructor also copies ParentMI, expecting the
|
||||
/// original to be deleted. If a MachineOperand is ever stored outside a
|
||||
/// MachineInstr, the parent pointer must be cleared.
|
||||
///
|
||||
/// Never call clearParent() on an operand in a MachineInstr.
|
||||
///
|
||||
void clearParent() { ParentMI = 0; }
|
||||
|
||||
void print(raw_ostream &os, const TargetMachine *TM = 0) const;
|
||||
|
||||
//===--------------------------------------------------------------------===//
|
||||
|
Reference in New Issue
Block a user