<div dir="ltr">How should I test that? So after adding this defines, tests will fail on non debug build or non statistics</div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jul 6, 2016 at 3:52 PM, Piotr Padlewski <span dir="ltr"><<a href="mailto:prazek@google.com" target="_blank">prazek@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Good point, I will fix it in a minute<div><br></div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jul 6, 2016 at 2:01 PM, Teresa Johnson 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"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"><span>On Wed, Jul 6, 2016 at 1:45 PM, Mehdi Amini 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:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><span><br>
> On Jul 6, 2016, at 1:26 PM, Piotr Padlewski via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>> wrote:<br>
><br>
> Author: prazek<br>
> Date: Wed Jul  6 15:26:25 2016<br>
> New Revision: 274668<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=274668&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=274668&view=rev</a><br>
> Log:<br>
> Add 'thinlto_src_module' metadata to imported function<br>
><br>
> Added metadata to be able to make statistics on how many functions<br>
> that have been imported have been removed. Also module name might<br>
> be helpfull when debugging.<br>
<br>
<br>
</span>It is not clear to me why this is enabled in production build, or not covered under a debugging flag.<br></blockquote><div><br></div></span><div>Good point. Since this is initially designed to drive some statistics, perhaps enabling it for non-release builds similar to when --stats is enabled (see ADT/Statistic.h: #if !defined(NDEBUG) || defined(LLVM_ENABLE_STATS)).<br><br>Teresa</div><div><span style="font-size:medium;color:rgb(0,0,0);font-family:monospace;line-height:16.25px;white-space:pre-wrap"><br></span></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">
—<div><div><br>
Mehdi<br>
<div><div><br>
<br>
<br>
<br>
<br>
><br>
> Reviewers: tejohnson, eraman<br>
><br>
> Subscribers: mehdi_amini, llvm-commits<br>
><br>
> Differential Revision: <a href="http://reviews.llvm.org/D21943" rel="noreferrer" target="_blank">http://reviews.llvm.org/D21943</a><br>
><br>
> Modified:<br>
>    llvm/trunk/lib/Transforms/IPO/FunctionImport.cpp<br>
>    llvm/trunk/test/Transforms/FunctionImport/funcimport.ll<br>
><br>
> Modified: llvm/trunk/lib/Transforms/IPO/FunctionImport.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/FunctionImport.cpp?rev=274668&r1=274667&r2=274668&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/FunctionImport.cpp?rev=274668&r1=274667&r2=274668&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/lib/Transforms/IPO/FunctionImport.cpp (original)<br>
> +++ llvm/trunk/lib/Transforms/IPO/FunctionImport.cpp Wed Jul  6 15:26:25 2016<br>
> @@ -591,6 +591,12 @@ bool FunctionImporter::importFunctions(<br>
>                    << SrcModule->getSourceFileName() << "\n");<br>
>       if (Import) {<br>
>         F.materialize();<br>
> +        // Add 'thinlto_src_module' metadata for statistics and debugging.<br>
> +        F.setMetadata("thinlto_src_module",<br>
> +                      llvm::MDNode::get(DestModule.getContext(),<br>
> +                                        {llvm::MDString::get(<br>
> +                                            DestModule.getContext(),<br>
> +                                            SrcModule->getSourceFileName())}));<br>
>         GlobalsToImport.insert(&F);<br>
>       }<br>
>     }<br>
><br>
> Modified: llvm/trunk/test/Transforms/FunctionImport/funcimport.ll<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/FunctionImport/funcimport.ll?rev=274668&r1=274667&r2=274668&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/FunctionImport/funcimport.ll?rev=274668&r1=274667&r2=274668&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/test/Transforms/FunctionImport/funcimport.ll (original)<br>
> +++ llvm/trunk/test/Transforms/FunctionImport/funcimport.ll Wed Jul  6 15:26:25 2016<br>
> @@ -14,7 +14,7 @@<br>
><br>
> ; Test import with smaller instruction limit and without the -disable-force-link-odr<br>
> ; RUN: opt -function-import -summary-file %t3.thinlto.bc %t.bc -import-instr-limit=5 -S | FileCheck %s --check-prefix=INSTLIM5ODR<br>
> -; INSTLIM5ODR: define linkonce_odr void @linkonceodr()<br>
> +; INSTLIM5ODR: define linkonce_odr void @linkonceodr() {<br>
><br>
><br>
> define i32 @main() #0 {<br>
> @@ -47,7 +47,7 @@ declare void @analias(...) #1<br>
> declare void @linkoncealias(...) #1<br>
><br>
> ; INSTLIMDEF-DAG: Import referencestatics<br>
> -; INSTLIMDEF-DAG: define available_externally i32 @referencestatics(i32 %i)<br>
> +; INSTLIMDEF-DAG: define available_externally i32 @referencestatics(i32 %i) !thinlto_src_module !0 {<br>
> ; INSTLIM5-DAG: declare i32 @referencestatics(...)<br>
> declare i32 @referencestatics(...) #1<br>
><br>
> @@ -56,27 +56,27 @@ declare i32 @referencestatics(...) #1<br>
> ; Ensure that the call is to the properly-renamed function.<br>
> ; INSTLIMDEF-DAG: Import staticfunc<br>
> ; INSTLIMDEF-DAG: %call = call i32 @staticfunc.llvm.<br>
> -; INSTLIMDEF-DAG: define available_externally hidden i32 @staticfunc.llvm.<br>
> +; INSTLIMDEF-DAG: define available_externally hidden i32 @staticfunc.llvm.{{.*}} !thinlto_src_module !0 {<br>
><br>
> ; INSTLIMDEF-DAG: Import referenceglobals<br>
> -; CHECK-DAG: define available_externally i32 @referenceglobals(i32 %i)<br>
> +; CHECK-DAG: define available_externally i32 @referenceglobals(i32 %i) !thinlto_src_module !0 {<br>
> declare i32 @referenceglobals(...) #1<br>
><br>
> ; The import of referenceglobals will expose call to globalfunc1 that<br>
> ; should in turn be imported.<br>
> ; INSTLIMDEF-DAG: Import globalfunc1<br>
> -; CHECK-DAG: define available_externally void @globalfunc1()<br>
> +; CHECK-DAG: define available_externally void @globalfunc1() !thinlto_src_module !0<br>
><br>
> ; INSTLIMDEF-DAG: Import referencecommon<br>
> -; CHECK-DAG: define available_externally i32 @referencecommon(i32 %i)<br>
> +; CHECK-DAG: define available_externally i32 @referencecommon(i32 %i) !thinlto_src_module !0 {<br>
> declare i32 @referencecommon(...) #1<br>
><br>
> ; INSTLIMDEF-DAG: Import setfuncptr<br>
> -; CHECK-DAG: define available_externally void @setfuncptr()<br>
> +; CHECK-DAG: define available_externally void @setfuncptr() !thinlto_src_module !0 {<br>
> declare void @setfuncptr(...) #1<br>
><br>
> ; INSTLIMDEF-DAG: Import callfuncptr<br>
> -; CHECK-DAG: define available_externally void @callfuncptr()<br>
> +; CHECK-DAG: define available_externally void @callfuncptr() !thinlto_src_module !0 {<br>
> declare void @callfuncptr(...) #1<br>
><br>
> ; Ensure that all uses of local variable @P which has used in setfuncptr<br>
> @@ -87,7 +87,7 @@ declare void @callfuncptr(...) #1<br>
><br>
> ; Ensure that @referencelargelinkonce definition is pulled in, but later we<br>
> ; also check that the linkonceodr function is not.<br>
> -; CHECK-DAG: define available_externally void @referencelargelinkonce()<br>
> +; CHECK-DAG: define available_externally void @referencelargelinkonce() !thinlto_src_module !0 {<br>
> ; INSTLIM5-DAG: declare void @linkonceodr()<br>
> declare void @referencelargelinkonce(...)<br>
><br>
> @@ -100,11 +100,12 @@ declare void @weakfunc(...) #1<br>
> declare void @linkoncefunc2(...) #1<br>
><br>
> ; INSTLIMDEF-DAG: Import funcwithpersonality<br>
> -; INSTLIMDEF-DAG: define available_externally hidden void @funcwithpersonality.llvm.{{.*}}() personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {<br>
> +; INSTLIMDEF-DAG: define available_externally hidden void @funcwithpersonality.llvm.{{.*}}() personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) !thinlto_src_module !0 {<br>
> ; INSTLIM5-DAG: declare hidden void @funcwithpersonality.llvm.{{.*}}()<br>
><br>
> ; INSTLIMDEF-DAG: Import globalfunc2<br>
> ; INSTLIMDEF-DAG: 13 function-import - Number of functions imported<br>
> +; CHECK-DAG: !0 = !{!"{{.*}}/Inputs/funcimport.ll"}<br>
><br>
> ; The actual GUID values will depend on path to test.<br>
> ; GUID-DAG: GUID {{.*}} is weakalias<br>
><br>
><br>
> _______________________________________________<br>
> llvm-commits mailing list<br>
> <a href="mailto:llvm-commits@lists.llvm.org" target="_blank">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>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">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></div></div></blockquote></div><span><font color="#888888"><br><br clear="all"><div><br></div>-- <br><div><span style="font-family:times;font-size:medium"><table cellspacing="0" cellpadding="0"><tbody><tr style="color:rgb(85,85,85);font-family:sans-serif;font-size:small"><td nowrap style="border-top-style:solid;border-top-color:rgb(213,15,37);border-top-width:2px">Teresa Johnson |</td><td nowrap style="border-top-style:solid;border-top-color:rgb(51,105,232);border-top-width:2px"> Software Engineer |</td><td nowrap style="border-top-style:solid;border-top-color:rgb(0,153,57);border-top-width:2px"> <a href="mailto:tejohnson@google.com" target="_blank">tejohnson@google.com</a> |</td><td nowrap style="border-top-style:solid;border-top-color:rgb(238,178,17);border-top-width:2px"> <a href="tel:408-460-2413" value="+14084602413" target="_blank">408-460-2413</a></td></tr></tbody></table></span></div>
</font></span></div></div>
<br>_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">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></blockquote></div><br></div>
</div></div></blockquote></div><br></div>