<div dir="ltr">Great, thanks for the info David!</div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jan 7, 2016 at 5:56 PM, David Chisnall <span dir="ltr"><<a href="mailto:David.Chisnall@cl.cam.ac.uk" target="_blank">David.Chisnall@cl.cam.ac.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 7 Jan 2016, at 09:49, Andrew Parker <<a href="mailto:andrew.j.c.parker@gmail.com">andrew.j.c.parker@gmail.com</a>> wrote:<br>
><br>
> - Is there any significance in the naming _GLOBAL__sub_I_ vs __cxx_global_var_init or is this just an artefact of the way clang generates the code?<br>
<br>
</span>To the best of my knowledge, these are entirely private.  I think the _GLOBAL__ names are there to help debuggers spot what is going on.<br>
<span class=""><br>
> - Can I assume that the order the functions appear in @llvm.global_ctors is always the order that they should be called in (assuming there's actually any dependencies)?<br>
<br>
</span>Modulo the priority, yes, though the guarantees of the priority are very weak (and affected by linking.  Yay).<br>
<span class=""><br>
> This is significant to me as I'm performing manipulations on the IR to alter the static ctrs and then recompiling (you may shudder should you wish to do so :) ).<br>
<br>
</span>There’s an optimisation pass that tries to turn these things into static initialisers.  That’s probably a good place to start looking.<br>
<span class="HOEnZb"><font color="#888888"><br>
David<br>
<br>
</font></span></blockquote></div><br></div>