diff options
author | Evan Cheng <evan.cheng@apple.com> | 2008-02-13 09:06:18 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2008-02-13 09:06:18 +0000 |
commit | e984e504b5f3090ab270cbdab02638ac3a2afb21 (patch) | |
tree | c147a3131ad22614bac48c27453f76c31eb53181 /lib/CodeGen/LiveIntervalAnalysis.cpp | |
parent | e35a6d1dfb395925afe37bf0dc00fa2e006be190 (diff) |
Fix a potential serious problem where kills belonging to the val# defined by a two-address instruction is also on the val# that defines the input.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47057 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/LiveIntervalAnalysis.cpp')
-rw-r--r-- | lib/CodeGen/LiveIntervalAnalysis.cpp | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/lib/CodeGen/LiveIntervalAnalysis.cpp b/lib/CodeGen/LiveIntervalAnalysis.cpp index 43a092a4df..d32fc62379 100644 --- a/lib/CodeGen/LiveIntervalAnalysis.cpp +++ b/lib/CodeGen/LiveIntervalAnalysis.cpp @@ -315,7 +315,6 @@ void LiveIntervals::handleVirtualRegisterDef(MachineBasicBlock *mbb, const LiveRange *OldLR = interval.getLiveRangeContaining(RedefIndex-1); VNInfo *OldValNo = OldLR->valno; - unsigned OldEnd = OldLR->end; // Delete the initial value, which should be short and continuous, // because the 2-addr copy must be in the same MBB as the redef. @@ -328,7 +327,8 @@ void LiveIntervals::handleVirtualRegisterDef(MachineBasicBlock *mbb, // The new value number (#1) is defined by the instruction we claimed // defined value #0. VNInfo *ValNo = interval.getNextValue(0, 0, VNInfoAllocator); - interval.copyValNumInfo(ValNo, OldValNo); + ValNo->def = OldValNo->def; + ValNo->reg = OldValNo->reg; // Value#0 is now defined by the 2-addr instruction. OldValNo->def = RedefIndex; @@ -339,7 +339,6 @@ void LiveIntervals::handleVirtualRegisterDef(MachineBasicBlock *mbb, DOUT << " replace range with " << LR; interval.addRange(LR); interval.addKill(ValNo, RedefIndex); - interval.removeKills(ValNo, RedefIndex, OldEnd); // If this redefinition is dead, we need to add a dummy unit live // range covering the def slot. |