Fix a bug where I didn't test for an empty range before inspecting the

back of it.

I don't have anything even remotely close to a test case for this. It
only broke two build bots, both of them doing bootstrap builds, one of
them a dragonegg bootstrap. It doesn't break for me when I bootstrap
either. It doesn't reproduce every time or on many machines during the
bootstrap. Many thanks to Duncan Sands who got the exact command (and
stage of the bootstrap) which failed on the dragonegg bootstrap and
managed to get it to trigger under valgrind with debug symbols. The fix
was then found by inspection.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159993 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chandler Carruth 2012-07-10 15:41:33 +00:00
parent 2dd83eb1ab
commit 1b8da1d8f1

View File

@ -579,7 +579,8 @@ void LiveInterval::mergeIntervalRanges(const LiveInterval &RHS,
// And finally insert any trailing end of RHS (if we have one).
for (; RI != RE; ++RI)
if (ranges.back().valno == LHSValNo && RI->start <= ranges.back().end) {
if (!ranges.empty() &&
ranges.back().valno == LHSValNo && RI->start <= ranges.back().end) {
ranges.back().end = std::max(ranges.back().end, RI->end);
} else {
ranges.push_back(*RI);