diff options
author | Evan Cheng <evan.cheng@apple.com> | 2007-06-27 18:47:28 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2007-06-27 18:47:28 +0000 |
commit | 292da949f6c87d6499425d64d37d7c5870ec57ad (patch) | |
tree | 68eec077c9120c29ae0460d850ab7b0c82c6dc48 /lib/CodeGen/LiveIntervalAnalysis.cpp | |
parent | e47c333a12094296e54571ed1ac511a04d74840d (diff) |
If a livein is not used in the block. It's live through.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37764 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/LiveIntervalAnalysis.cpp')
-rw-r--r-- | lib/CodeGen/LiveIntervalAnalysis.cpp | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/lib/CodeGen/LiveIntervalAnalysis.cpp b/lib/CodeGen/LiveIntervalAnalysis.cpp index ebab85fb48..369493ff94 100644 --- a/lib/CodeGen/LiveIntervalAnalysis.cpp +++ b/lib/CodeGen/LiveIntervalAnalysis.cpp @@ -625,13 +625,15 @@ void LiveIntervals::handleLiveInRegister(MachineBasicBlock *MBB, exit: // Live-in register might not be used at all. if (end == MIIdx) { - DOUT << " dead"; - if (isAlias) + if (isAlias) { + DOUT << " dead"; end = getDefIndex(MIIdx) + 1; + } else { + DOUT << " live through"; + end = baseIndex; + } } - assert(start < end && "did not find end of interval?"); - LiveRange LR(start, end, interval.getNextValue(~0U, 0)); DOUT << " +" << LR << '\n'; interval.addRange(LR); @@ -662,7 +664,8 @@ void LiveIntervals::computeIntervals() { // Multiple live-ins can alias the same register. for (const unsigned* AS = mri_->getSubRegisters(*LI); *AS; ++AS) if (!hasInterval(*AS)) - handleLiveInRegister(MBB, MIIndex, getOrCreateInterval(*AS), true); + handleLiveInRegister(MBB, MIIndex, getOrCreateInterval(*AS), + true); } } |