<div dir="ltr">Do you still need a knob to keep local names, not as a debug flag but as user-visible command line flag?</div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Apr 21, 2016 at 10:53 AM, Davide Italiano 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">r267020, thanks for benchmarking!<br>
<span class=""><br>
On Thu, Apr 21, 2016 at 6:59 AM, Rafael Espíndola<br>
<<a href="mailto:rafael.espindola@gmail.com">rafael.espindola@gmail.com</a>> wrote:<br>
> According to heaptrack this takes the peak memory consumption when<br>
> linking llvm-as from 185.14 MB to 159.89MB, so I would highly<br>
> recommend changing the default now :-)<br>
><br>
> Cheers,<br>
> Rafael<br>
><br>
><br>
> On 21 April 2016 at 00:46, Davide Italiano via llvm-commits<br>
> <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br>
>> Author: davide<br>
>> Date: Wed Apr 20 23:46:22 2016<br>
>> New Revision: 266953<br>
</span>>>r267020<br>
<div class="HOEnZb"><div class="h5">>> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=266953&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=266953&view=rev</a><br>
>> Log:<br>
>> [LTO] Discard names for Values that are not global.<br>
>><br>
>> This is not on by default (but it might be in the future).<br>
>> The knob to enable the optimization is -lto-discard-value-names.<br>
>><br>
>> Added:<br>
>>     lld/trunk/test/ELF/lto/discard-value-names.ll<br>
>> Modified:<br>
>>     lld/trunk/ELF/Config.h<br>
>>     lld/trunk/ELF/Driver.cpp<br>
>>     lld/trunk/ELF/LTO.h<br>
>>     lld/trunk/ELF/Options.td<br>
>><br>
>> Modified: lld/trunk/ELF/Config.h<br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Config.h?rev=266953&r1=266952&r2=266953&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Config.h?rev=266953&r1=266952&r2=266953&view=diff</a><br>
>> ==============================================================================<br>
>> --- lld/trunk/ELF/Config.h (original)<br>
>> +++ lld/trunk/ELF/Config.h Wed Apr 20 23:46:22 2016<br>
>> @@ -58,6 +58,7 @@ struct Configuration {<br>
>>    bool Demangle = true;<br>
>>    bool DisableVerify;<br>
>>    bool DiscardAll;<br>
>> +  bool DiscardValueNames;<br>
>>    bool DiscardLocals;<br>
>>    bool DiscardNone;<br>
>>    bool EhFrameHdr;<br>
>><br>
>> Modified: lld/trunk/ELF/Driver.cpp<br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Driver.cpp?rev=266953&r1=266952&r2=266953&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Driver.cpp?rev=266953&r1=266952&r2=266953&view=diff</a><br>
>> ==============================================================================<br>
>> --- lld/trunk/ELF/Driver.cpp (original)<br>
>> +++ lld/trunk/ELF/Driver.cpp Wed Apr 20 23:46:22 2016<br>
>> @@ -289,6 +289,7 @@ void LinkerDriver::readConfigs(opt::Inpu<br>
>>    Config->Demangle = !Args.hasArg(OPT_no_demangle);<br>
>>    Config->DisableVerify = Args.hasArg(OPT_disable_verify);<br>
>>    Config->DiscardAll = Args.hasArg(OPT_discard_all);<br>
>> +  Config->DiscardValueNames = Args.hasArg(OPT_lto_discard_value_names);<br>
>>    Config->DiscardLocals = Args.hasArg(OPT_discard_locals);<br>
>>    Config->DiscardNone = Args.hasArg(OPT_discard_none);<br>
>>    Config->EhFrameHdr = Args.hasArg(OPT_eh_frame_hdr);<br>
>><br>
>> Modified: lld/trunk/ELF/LTO.h<br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/LTO.h?rev=266953&r1=266952&r2=266953&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/LTO.h?rev=266953&r1=266952&r2=266953&view=diff</a><br>
>> ==============================================================================<br>
>> --- lld/trunk/ELF/LTO.h (original)<br>
>> +++ lld/trunk/ELF/LTO.h Wed Apr 20 23:46:22 2016<br>
>> @@ -21,6 +21,7 @@<br>
>>  #ifndef LLD_ELF_LTO_H<br>
>>  #define LLD_ELF_LTO_H<br>
>><br>
>> +#include "Config.h"<br>
>>  #include "lld/Core/LLVM.h"<br>
>>  #include "llvm/ADT/SmallString.h"<br>
>>  #include "llvm/ADT/StringSet.h"<br>
>> @@ -41,6 +42,7 @@ public:<br>
>><br>
>>    BitcodeCompiler()<br>
>>        : Combined(new llvm::Module("ld-temp.o", Context)), Mover(*Combined) {<br>
>> +    Context.setDiscardValueNames(Config->DiscardValueNames);<br>
>>      Context.enableDebugTypeODRUniquing();<br>
>>    }<br>
>><br>
>><br>
>> Modified: lld/trunk/ELF/Options.td<br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Options.td?rev=266953&r1=266952&r2=266953&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Options.td?rev=266953&r1=266952&r2=266953&view=diff</a><br>
>> ==============================================================================<br>
>> --- lld/trunk/ELF/Options.td (original)<br>
>> +++ lld/trunk/ELF/Options.td Wed Apr 20 23:46:22 2016<br>
>> @@ -238,6 +238,7 @@ def G : Separate<["-"], "G">;<br>
>>  def alias_version_script_version_script : Joined<["--"], "version-script=">, Alias<version_script>;<br>
>><br>
>>  // LTO-related options.<br>
>> +def lto_discard_value_names : Flag<["-"], "lto-discard-value-names">;<br>
>>  def lto_jobs : Joined<["--"], "lto-jobs=">,<br>
>>    HelpText<"Number of threads to run codegen">;<br>
>>  def disable_verify : Flag<["-"], "disable-verify">;<br>
>><br>
>> Added: lld/trunk/test/ELF/lto/discard-value-names.ll<br>
>> URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/lto/discard-value-names.ll?rev=266953&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/lto/discard-value-names.ll?rev=266953&view=auto</a><br>
>> ==============================================================================<br>
>> --- lld/trunk/test/ELF/lto/discard-value-names.ll (added)<br>
>> +++ lld/trunk/test/ELF/lto/discard-value-names.ll Wed Apr 20 23:46:22 2016<br>
>> @@ -0,0 +1,33 @@<br>
>> +; RUN: llvm-as %s -o %t.o<br>
>> +<br>
>> +; RUN: ld.lld -m elf_x86_64 -shared -save-temps %t.o -o %t2.o<br>
>> +; RUN: llvm-dis < %t2.o.lto.bc | FileCheck %s<br>
>> +<br>
>> +; RUN: ld.lld -m elf_x86_64 -lto-discard-value-names -shared -save-temps %t.o -o %t2.o<br>
>> +; RUN: llvm-dis < %t2.o.lto.bc | FileCheck --check-prefix=NONAME %s<br>
>> +<br>
>> +; CHECK: @GlobalValueName<br>
>> +; CHECK: @foo(i32 %in)<br>
>> +; CHECK: somelabel:<br>
>> +; CHECK:  %GV = load i32, i32* @GlobalValueName<br>
>> +; CHECK:  %add = add i32 %in, %GV<br>
>> +; CHECK:  ret i32 %add<br>
>> +<br>
>> +; NONAME: @GlobalValueName<br>
>> +; NONAME: @foo(i32)<br>
>> +; NONAME-NOT: somelabel:<br>
>> +; NONAME:  %2 = load i32, i32* @GlobalValueName<br>
>> +; NONAME:  %3 = add i32 %0, %2<br>
>> +; NONAME:  ret i32 %3<br>
>> +<br>
>> +target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"<br>
>> +target triple = "x86_64-unknown-linux-gnu"<br>
>> +<br>
>> +@GlobalValueName = global i32 0<br>
>> +<br>
>> +define i32 @foo(i32 %in) {<br>
>> +somelabel:<br>
>> +  %GV = load i32, i32* @GlobalValueName<br>
>> +  %add = add i32 %in, %GV<br>
>> +  ret i32 %add<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>
<br>
<br>
<br>
</div></div><span class="HOEnZb"><font color="#888888">--<br>
Davide<br>
<br>
"There are no solved problems; there are only problems that are more<br>
or less solved" -- Henri Poincare<br>
</font></span><div class="HOEnZb"><div class="h5">_______________________________________________<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>