diff options
Diffstat (limited to 'llvm/lib/CodeGen/LiveRangeCalc.cpp')
| -rw-r--r-- | llvm/lib/CodeGen/LiveRangeCalc.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/LiveRangeCalc.cpp b/llvm/lib/CodeGen/LiveRangeCalc.cpp index 4433fb1aaa2..daa1ee05f6a 100644 --- a/llvm/lib/CodeGen/LiveRangeCalc.cpp +++ b/llvm/lib/CodeGen/LiveRangeCalc.cpp @@ -55,7 +55,7 @@ void LiveRangeCalc::createDeadDefs(LiveInterval &LI) { const MachineInstr *MI = MO.getParent(); SlotIndex Idx = getDefIndex(*Indexes, *MI, MO.isEarlyClobber()); unsigned SubReg = MO.getSubReg(); - if (SubReg != 0 || LI.hasSubRanges()) { + if (LI.hasSubRanges() || (SubReg != 0 && MRI->tracksSubRegLiveness())) { unsigned Mask = SubReg != 0 ? TRI.getSubRegIndexLaneMask(SubReg) : MRI->getMaxLaneMaskForVReg(Reg); @@ -179,7 +179,8 @@ void LiveRangeCalc::extendToUses(LiveInterval &LI) { continue; SlotIndex Idx = getUseIndex(*Indexes, MO); unsigned SubReg = MO.getSubReg(); - if (MO.isUse() && (LI.hasSubRanges() || SubReg != 0)) { + if (MO.isUse() && (LI.hasSubRanges() || + (MRI->tracksSubRegLiveness() && SubReg != 0))) { unsigned Mask = SubReg != 0 ? TRI.getSubRegIndexLaneMask(SubReg) : Mask = MRI->getMaxLaneMaskForVReg(Reg); |

