<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Sun, Dec 6, 2015 at 9:43 AM, David Majnemer <span dir="ltr"><<a href="mailto:david.majnemer@gmail.com" target="_blank">david.majnemer@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><br><br>On Sunday, December 6, 2015, Rafael Espíndola <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Looking at how unique appending linkage handling is I started<br>
wondering if we still need it at all.<br>
<br>
Now that we have sections, private linkage and comdats, I don't think we do.<br>
<br>
Things like<br>
<br>
 @llvm.global_ctors = ... { i32 A1, i32 B1, i8* C1 }, { i32 A2, i32 B2, i8* C2 }<br>
<br>
can be represented as<br>
<br>
@ctor1 = private ... { i32 A1, i32 B1 }, section<br>
"llvm.metadata.ctors", comdat $(comdat of C1).<br>
@ctor2 = private ... { i32 A2, i32 B2 }, section<br>
"llvm.metadata.ctors", comdat $(comdat of C2).</blockquote><div><br></div></span><div>This wouldn't work on Mach-O because it doesn't have COMDATs.</div><div></div></blockquote></div><br></div><div class="gmail_extra">That's OK, MachO uses guard variables to prevent double initialization instead of comdats.</div></div>