<div dir="ltr">r263178, thanks for the suggestion!<div><br></div><div>-- Sean Silva</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Mar 10, 2016 at 4:59 AM, Rafael Espíndola <span dir="ltr"><<a href="mailto:rafael.espindola@gmail.com" target="_blank">rafael.espindola@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Just a small thing I noticed, maybe you want to run llvm-dis on<br>
%t.so.lto.bc just to show it is bitcode?<br>
<br>
Cheers,<br>
Rafael<br>
<br>
<br>
On 9 March 2016 at 17:30, Sean Silva via llvm-commits<br>
<div class="HOEnZb"><div class="h5"><<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br>
> Author: silvas<br>
> Date: Wed Mar  9 16:30:05 2016<br>
> New Revision: 263070<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=263070&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=263070&view=rev</a><br>
> Log:<br>
> [lto] Add saving the LTO .o file to -save-temps.<br>
><br>
> Summary:<br>
> This implements another part of -save-temps.<br>
> After this, the only remaining part is dumping the optimized bitcode. But<br>
> currently LLD's LTO doesn't have a non-intrusive place to put this.<br>
> Eventually we probably will and it will make sense to add it then.<br>
><br>
> Reviewers: ruiu, rafael<br>
><br>
> Subscribers: joker.eph, Bigcheese, llvm-commits<br>
><br>
> Differential Revision: <a href="http://reviews.llvm.org/D18009" rel="noreferrer" target="_blank">http://reviews.llvm.org/D18009</a><br>
><br>
> Modified:<br>
>     lld/trunk/ELF/SymbolTable.cpp<br>
>     lld/trunk/test/ELF/lto/save-temps.ll<br>
><br>
> Modified: lld/trunk/ELF/SymbolTable.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/SymbolTable.cpp?rev=263070&r1=263069&r2=263070&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/SymbolTable.cpp?rev=263070&r1=263069&r2=263070&view=diff</a><br>
> ==============================================================================<br>
> --- lld/trunk/ELF/SymbolTable.cpp (original)<br>
> +++ lld/trunk/ELF/SymbolTable.cpp Wed Mar  9 16:30:05 2016<br>
> @@ -96,6 +96,15 @@ void SymbolTable<ELFT>::addFile(std::uni<br>
>      resolve(B);<br>
>  }<br>
><br>
> +// This is for use when debugging LTO.<br>
> +static void saveLtoObjectFile(StringRef Buffer) {<br>
> +  std::error_code EC;<br>
> +  raw_fd_ostream OS(Config->OutputFile.str() + ".lto.o", EC,<br>
> +                    sys::fs::OpenFlags::F_None);<br>
> +  check(EC);<br>
> +  OS << Buffer;<br>
> +}<br>
> +<br>
>  // Codegen the module M and returns the resulting InputFile.<br>
>  template <class ELFT><br>
>  std::unique_ptr<InputFile> SymbolTable<ELFT>::codegen(Module &M) {<br>
> @@ -123,6 +132,8 @@ std::unique_ptr<InputFile> SymbolTable<E<br>
>      fatal("Failed to setup codegen");<br>
>    CodeGenPasses.run(M);<br>
>    LtoBuffer = MemoryBuffer::getMemBuffer(OwningLTOData, "", false);<br>
> +  if (Config->SaveTemps)<br>
> +    saveLtoObjectFile(LtoBuffer->getBuffer());<br>
>    return createObjectFile(*LtoBuffer);<br>
>  }<br>
><br>
><br>
> Modified: lld/trunk/test/ELF/lto/save-temps.ll<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/lto/save-temps.ll?rev=263070&r1=263069&r2=263070&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/lto/save-temps.ll?rev=263070&r1=263069&r2=263070&view=diff</a><br>
> ==============================================================================<br>
> --- lld/trunk/test/ELF/lto/save-temps.ll (original)<br>
> +++ lld/trunk/test/ELF/lto/save-temps.ll Wed Mar  9 16:30:05 2016<br>
> @@ -1,10 +1,11 @@<br>
>  ; REQUIRES: x86<br>
> -; RUN: rm -f %t.so %t.so.lto.bc<br>
> +; RUN: rm -f %t.so %t.so.lto.bc %t.so.lto.o<br>
>  ; RUN: llvm-as %s -o %t.o<br>
>  ; RUN: llvm-as %p/Inputs/save-temps.ll -o %t2.o<br>
>  ; RUN: ld.lld -shared -m elf_x86_64 %t.o %t2.o -o %t.so -save-temps<br>
>  ; RUN: llvm-nm %t.so | FileCheck %s<br>
>  ; RUN: llvm-nm %t.so.lto.bc | FileCheck %s<br>
> +; RUN: llvm-nm %t.so.lto.o | FileCheck %s<br>
><br>
>  target triple = "x86_64-unknown-linux-gnu"<br>
>  target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"<br>
> @@ -13,5 +14,5 @@ define void @foo() {<br>
>    ret void<br>
>  }<br>
><br>
> -; CHECK-DAG: T bar<br>
> -; CHECK-DAG: T foo<br>
> +; CHECK: T bar<br>
> +; CHECK: T foo<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>
</div></div></blockquote></div><br></div>