<div dir="ltr">Accidental commit - will be reverting in a moment<div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Mar 1, 2016 at 12:40 PM, David Blaikie via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: dblaikie<br>
Date: Tue Mar  1 14:40:02 2016<br>
New Revision: 262389<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=262389&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=262389&view=rev</a><br>
Log:<br>
llvm-dwp: Keep ObjectFiles alive until object emission their contents can be referenced directly rather than copied<br>
<br>
Modified:<br>
    llvm/trunk/tools/llvm-dwp/llvm-dwp.cpp<br>
<br>
Modified: llvm/trunk/tools/llvm-dwp/llvm-dwp.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-dwp/llvm-dwp.cpp?rev=262389&r1=262388&r2=262389&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-dwp/llvm-dwp.cpp?rev=262389&r1=262388&r2=262389&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/tools/llvm-dwp/llvm-dwp.cpp (original)<br>
+++ llvm/trunk/tools/llvm-dwp/llvm-dwp.cpp Tue Mar  1 14:40:02 2016<br>
@@ -358,11 +358,17 @@ static std::error_code write(MCStreamer<br>
<br>
   uint32_t ContributionOffsets[8] = {};<br>
<br>
+  SmallVector<OwningBinary<object::ObjectFile>, 128> Objects;<br>
+  Objects.reserve(Inputs.size());<br>
   for (const auto &Input : Inputs) {<br>
     auto ErrOrObj = object::ObjectFile::createObjectFile(Input);<br>
     if (!ErrOrObj)<br>
       return ErrOrObj.getError();<br>
<br>
+    Objects.push_back(std::move(*ErrOrObj));<br>
+<br>
+    auto &Obj = *Objects.back().getBinary();<br>
+<br>
     UnitIndexEntry CurEntry = {};<br>
<br>
     StringRef CurStrSection;<br>
@@ -375,7 +381,7 @@ static std::error_code write(MCStreamer<br>
<br>
     SmallVector<SmallString<32>, 4> UncompressedSections;<br>
<br>
-    for (const auto &Section : ErrOrObj->getBinary()->sections()) {<br>
+    for (const auto &Section : Obj.sections()) {<br>
       if (Section.isBSS())<br>
         continue;<br>
       if (Section.isVirtual())<br>
@@ -452,8 +458,7 @@ static std::error_code write(MCStreamer<br>
<br>
     if (!CurCUIndexSection.empty()) {<br>
       DWARFUnitIndex CUIndex(DW_SECT_INFO);<br>
-      DataExtractor CUIndexData(CurCUIndexSection,<br>
-                                ErrOrObj->getBinary()->isLittleEndian(), 0);<br>
+      DataExtractor CUIndexData(CurCUIndexSection, Obj.isLittleEndian(), 0);<br>
       if (!CUIndex.parse(CUIndexData))<br>
         return make_error_code(std::errc::invalid_argument);<br>
<br>
@@ -491,8 +496,7 @@ static std::error_code write(MCStreamer<br>
         if (CurTUIndexSection.empty())<br>
           return make_error_code(std::errc::invalid_argument);<br>
         DWARFUnitIndex TUIndex(DW_SECT_TYPES);<br>
-        DataExtractor TUIndexData(CurTUIndexSection,<br>
-                                  ErrOrObj->getBinary()->isLittleEndian(), 0);<br>
+        DataExtractor TUIndexData(CurTUIndexSection, Obj.isLittleEndian(), 0);<br>
         if (!TUIndex.parse(TUIndexData))<br>
           return make_error_code(std::errc::invalid_argument);<br>
         addAllTypesFromDWP(Out, TypeIndexEntries, TUIndex, TypesSection,<br>
@@ -537,7 +541,7 @@ static std::error_code write(MCStreamer<br>
<br>
   writeIndex(Out, MCOFI.getDwarfCUIndexSection(), ContributionOffsets,<br>
              IndexEntries);<br>
-<br>
+  Out.Finish();<br>
   return std::error_code();<br>
 }<br>
<br>
@@ -608,6 +612,4 @@ int main(int argc, char **argv) {<br>
<br>
   if (auto Err = write(*MS, InputFiles))<br>
     return error(Err.message(), "Writing DWP file");<br>
-<br>
-  MS->Finish();<br>
 }<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>