From: Yaron Keren <yaron.keren@gmail.com>
Date: Mon, 10 Aug 2015 18:03:35 +0000 (+0000)
Subject: Really implement David Blaikie suggestion in full of seperating
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=af1c9b3bfbd26b8d4e22c27c01d0a43b1c68b987;p=oota-llvm.git

Really implement David Blaikie suggestion in full of seperating
variable initialization from its usage in the push_back making
collapse of the two statements unlikely even without a comment.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244470 91177308-0d34-0410-b5e6-96231b3b80d8
---

diff --git a/tools/dsymutil/DwarfLinker.cpp b/tools/dsymutil/DwarfLinker.cpp
index 95f4ae4dc0d..997808d12a3 100644
--- a/tools/dsymutil/DwarfLinker.cpp
+++ b/tools/dsymutil/DwarfLinker.cpp
@@ -2884,15 +2884,13 @@ void DwarfLinker::patchLineTableForUnit(CompileUnit &Unit,
       if (StopAddress != -1ULL && !Seq.empty()) {
         // Insert end sequence row with the computed end address, but
         // the same line as the previous one.
-        // Do not collapse the next two statements as the push_back operation
-        // may reallocate the vector and invalidate the iterator Seq.back().
         auto NextLine = Seq.back();
-        Seq.push_back(NextLine);
         Seq.back().Address = StopAddress;
         Seq.back().EndSequence = 1;
         Seq.back().PrologueEnd = 0;
         Seq.back().BasicBlock = 0;
         Seq.back().EpilogueBegin = 0;
+        Seq.push_back(NextLine);
         insertLineSequence(Seq, NewRows);
       }