<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, May 25, 2016 at 9:29 AM, Reid Kleckner <span dir="ltr"><<a href="mailto:rnk@google.com" target="_blank">rnk@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">+  if (Triple(M->getTargetTriple()).isOSBinFormatCOFF())<br>
+    User->setComdat(M->getOrInsertComdat(User->getName()));<br>
<br>
I think this should really be 'if (!Triple(...).isOSBinFormatMachO())<br>
...->setComdat...', i.e. we should always set the comdat if the<br>
platform supports it.<br></blockquote><div><br></div><div>Is there a more generic query for that ?</div><div><br></div><div>David</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
On Tue, May 24, 2016 at 11:47 AM, Xinliang David Li via llvm-commits<br>
<<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br>
> Author: davidxl<br>
> Date: Tue May 24 13:47:38 2016<br>
> New Revision: 270596<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=270596&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=270596&view=rev</a><br>
> Log:<br>
> [profile] Fix runtime hook linkage bug for COFF<br>
><br>
> Patch by: Johan Engelen<br>
><br>
> the user hook has linkonceODR linkage and it needs to be<br>
> in comdatAny group.<br>
><br>
><br>
><br>
> Modified:<br>
>     llvm/trunk/lib/Transforms/Instrumentation/InstrProfiling.cpp<br>
>     llvm/trunk/test/Instrumentation/InstrProfiling/linkage.ll<br>
><br>
> Modified: llvm/trunk/lib/Transforms/Instrumentation/InstrProfiling.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/InstrProfiling.cpp?rev=270596&r1=270595&r2=270596&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/InstrProfiling.cpp?rev=270596&r1=270595&r2=270596&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/lib/Transforms/Instrumentation/InstrProfiling.cpp (original)<br>
> +++ llvm/trunk/lib/Transforms/Instrumentation/InstrProfiling.cpp Tue May 24 13:47:38 2016<br>
> @@ -550,6 +550,8 @@ void InstrProfiling::emitRuntimeHook() {<br>
>    User->addFnAttr(Attribute::NoInline);<br>
>    if (Options.NoRedZone) User->addFnAttr(Attribute::NoRedZone);<br>
>    User->setVisibility(GlobalValue::HiddenVisibility);<br>
> +  if (Triple(M->getTargetTriple()).isOSBinFormatCOFF())<br>
> +    User->setComdat(M->getOrInsertComdat(User->getName()));<br>
><br>
>    IRBuilder<> IRB(BasicBlock::Create(M->getContext(), "", User));<br>
>    auto *Load = IRB.CreateLoad(Var);<br>
><br>
> Modified: llvm/trunk/test/Instrumentation/InstrProfiling/linkage.ll<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Instrumentation/InstrProfiling/linkage.ll?rev=270596&r1=270595&r2=270596&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Instrumentation/InstrProfiling/linkage.ll?rev=270596&r1=270595&r2=270596&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/test/Instrumentation/InstrProfiling/linkage.ll (original)<br>
> +++ llvm/trunk/test/Instrumentation/InstrProfiling/linkage.ll Tue May 24 13:47:38 2016<br>
> @@ -4,6 +4,8 @@<br>
>  ; RUN: opt < %s -mtriple=x86_64-unknown-linux -instrprof -S | FileCheck %s --check-prefix=LINUX --check-prefix=COMMON<br>
>  ; RUN: opt < %s -mtriple=x86_64-apple-macosx10.10.0 -passes=instrprof -S | FileCheck %s --check-prefix=OTHER --check-prefix=COMMON<br>
>  ; RUN: opt < %s -mtriple=x86_64-unknown-linux -passes=instrprof -S | FileCheck %s --check-prefix=LINUX --check-prefix=COMMON<br>
> +; RUN: opt < %s  -mtriple=x86_64-pc-win32-coff -instrprof -S | FileCheck %s --check-prefix=COFF<br>
> +; RUN: opt < %s  -mtriple=x86_64-pc-win32-coff -passes=instrprof -S | FileCheck %s --check-prefix=COFF<br>
><br>
>  @__profn_foo = hidden constant [3 x i8] c"foo"<br>
>  @__profn_foo_weak = weak hidden constant [8 x i8] c"foo_weak"<br>
> @@ -57,5 +59,6 @@ declare void @llvm.instrprof.increment(i<br>
>  ; OTHER:   %[[REG:.*]] = load i32, i32* @__llvm_profile_runtime<br>
>  ; OTHER:   ret i32 %[[REG]]<br>
>  ; OTHER: }<br>
> +; COFF: define linkonce_odr hidden i32 @__llvm_profile_runtime_user() {{.*}} comdat {<br>
>  ; LINUX-NOT: define linkonce_odr hidden i32 @__llvm_profile_runtime_user() {{.*}} {<br>
>  ; LINUX-NOT:   %[[REG:.*]] = load i32, i32* @__llvm_profile_runtime<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></div>