diff options
| author | Matthias Braun <matze@braunis.de> | 2016-05-24 21:54:01 +0000 |
|---|---|---|
| committer | Matthias Braun <matze@braunis.de> | 2016-05-24 21:54:01 +0000 |
| commit | fc4c8a1e46ea2d92c0093b44d800955c2b87cdc0 (patch) | |
| tree | 102f1f1f39bd198348714ca49a1ae97547e47fe7 /llvm/lib | |
| parent | 94ddce2c0e27d40813086823487eaabcccd97b7b (diff) | |
| download | bcm5719-llvm-fc4c8a1e46ea2d92c0093b44d800955c2b87cdc0.tar.gz bcm5719-llvm-fc4c8a1e46ea2d92c0093b44d800955c2b87cdc0.zip | |
LiveIntervalAnalysis: Fix handleMove() re-using the wrong value number
This fixes http://llvm.org/PR27856
llvm-svn: 270619
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/CodeGen/LiveIntervalAnalysis.cpp | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/llvm/lib/CodeGen/LiveIntervalAnalysis.cpp b/llvm/lib/CodeGen/LiveIntervalAnalysis.cpp index 16d0030a346..2358b0e7464 100644 --- a/llvm/lib/CodeGen/LiveIntervalAnalysis.cpp +++ b/llvm/lib/CodeGen/LiveIntervalAnalysis.cpp @@ -1257,20 +1257,16 @@ private: // value. LiveRange::iterator NewSegment = NewIdxIn; LiveRange::iterator Next = std::next(NewSegment); - NewSegment->valno = OldIdxVNI; if (SlotIndex::isEarlierInstr(Next->start, NewIdx)) { // There is no gap between NewSegment and its predecessor. *NewSegment = LiveRange::Segment(Next->start, SplitPos, - NewSegment->valno); - NewSegment->valno->def = Next->start; - - *Next = LiveRange::Segment(SplitPos, Next->end, Next->valno); + Next->valno); + *Next = LiveRange::Segment(SplitPos, Next->end, OldIdxVNI); Next->valno->def = SplitPos; } else { // There is a gap between NewSegment and its predecessor // Value becomes live in. - *NewSegment = LiveRange::Segment(SplitPos, Next->start, - NewSegment->valno); + *NewSegment = LiveRange::Segment(SplitPos, Next->start, OldIdxVNI); NewSegment->valno->def = SplitPos; } } else { |

