From 1b8da1d8f14f91b88ff99d3bd5ec4d904cdf21b7 Mon Sep 17 00:00:00 2001 From: Chandler Carruth Date: Tue, 10 Jul 2012 15:41:33 +0000 Subject: [PATCH] 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 --- lib/CodeGen/LiveInterval.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/CodeGen/LiveInterval.cpp b/lib/CodeGen/LiveInterval.cpp index 2dfd714e9ec..9342439cc3d 100644 --- a/lib/CodeGen/LiveInterval.cpp +++ b/lib/CodeGen/LiveInterval.cpp @@ -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);