mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-14 14:24:05 +00:00
Fix for PR1306.
- A register def / use now implicitly affects sub-register liveness but does not affect liveness information of super-registers. - Def of a larger register (if followed by a use later) is treated as read/mod/write of a smaller register. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36434 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -124,8 +124,25 @@ private: // Intermediate data structures
|
||||
|
||||
const MRegisterInfo *RegInfo;
|
||||
|
||||
MachineInstr **PhysRegInfo;
|
||||
bool *PhysRegUsed;
|
||||
// PhysRegInfo - Keep track of which instruction was the last def/use of a
|
||||
// physical register. This is a purely local property, because all physical
|
||||
// register references as presumed dead across basic blocks.
|
||||
std::vector<MachineInstr*> PhysRegInfo;
|
||||
|
||||
// PhysRegUsed - Keep track whether the physical register has been used after
|
||||
// its last definition. This is local property.
|
||||
BitVector PhysRegUsed;
|
||||
|
||||
// PhysRegPartDef - Keep track of a list of instructions which "partially"
|
||||
// defined the physical register (e.g. on X86 AX partially defines EAX).
|
||||
// These are turned into use/mod/write if there is a use of the register
|
||||
// later in the same block. This is local property.
|
||||
std::vector<std::vector<MachineInstr*> > PhysRegPartDef;
|
||||
|
||||
// PhysRegPartUse - Keep track of which instruction was the last partial use
|
||||
// of a physical register (e.g. on X86 a def of EAX followed by a use of AX).
|
||||
// This is a purely local property.
|
||||
std::vector<MachineInstr*> PhysRegPartUse;
|
||||
|
||||
typedef std::map<const MachineBasicBlock*,
|
||||
std::vector<unsigned> > PHIVarInfoMap;
|
||||
|
Reference in New Issue
Block a user