Changes in directory llvm/include/llvm/CodeGen:
LiveIntervalAnalysis.h updated: 1.79 -> 1.80 LiveVariables.h updated: 1.38 -> 1.39 --- Log message: Fix for PR1306: http://llvm.org/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. --- Diffs of the changes: (+20 -3) LiveIntervalAnalysis.h | 2 +- LiveVariables.h | 21 +++++++++++++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) Index: llvm/include/llvm/CodeGen/LiveIntervalAnalysis.h diff -u llvm/include/llvm/CodeGen/LiveIntervalAnalysis.h:1.79 llvm/include/llvm/CodeGen/LiveIntervalAnalysis.h:1.80 --- llvm/include/llvm/CodeGen/LiveIntervalAnalysis.h:1.79 Tue Apr 17 21:30:19 2007 +++ llvm/include/llvm/CodeGen/LiveIntervalAnalysis.h Wed Apr 25 02:30:23 2007 @@ -255,7 +255,7 @@ /// handleLiveInRegister - Create interval for a livein register. void handleLiveInRegister(MachineBasicBlock* mbb, unsigned MIIdx, - LiveInterval &interval); + LiveInterval &interval, bool isAlias = false); /// Return true if the two specified registers belong to different /// register classes. The registers may be either phys or virt regs. Index: llvm/include/llvm/CodeGen/LiveVariables.h diff -u llvm/include/llvm/CodeGen/LiveVariables.h:1.38 llvm/include/llvm/CodeGen/LiveVariables.h:1.39 --- llvm/include/llvm/CodeGen/LiveVariables.h:1.38 Wed Apr 18 00:04:38 2007 +++ llvm/include/llvm/CodeGen/LiveVariables.h Wed Apr 25 02:30:23 2007 @@ -124,8 +124,25 @@ 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; _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits