<div dir="ltr"><div>Hello,</div><div><br></div><div>I have been struggling with making LLJIT runConstructors() working. I saw <a href="https://lists.llvm.org/pipermail/llvm-dev/2019-March/131057.html">this email thread</a> and tried to replicate its logic:</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><pre><font size="1">LLJIT LJ;
// Add Modules.
if (auto Err = LJ.runConstructors())
  ... ; // report error.</font></pre></div></blockquote><div>But it doesn't seem to work. The global constructors in llvm.global_ctor doesn't seem to run (I added a printf in the constructor and it doesn't seem to get executed).</div><div><br></div><div>However, the following code seems to work:</div><div>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><pre style="margin:0px;text-indent:0px"><span style="color:rgb(128,0,128)">CtorDtorRunner</span><span style="color:rgb(192,192,192)"> </span><span style="color:rgb(9,46,100)">RR</span>(<span style="font-style:italic;color:rgb(9,46,100)">J</span><span style="font-style:italic;color:rgb(0,103,124)">-></span><span style="font-style:italic;color:rgb(0,103,124)">getMainJITDylib</span><span style="font-style:italic">()</span>);</pre><pre style="margin:0px;text-indent:0px"><span style="color:rgb(9,46,100)">RR</span>.<span style="color:rgb(0,103,124)">add</span>(<span style="color:rgb(0,103,124)">getConstructors</span>(*<span style="color:rgb(9,46,100)">tsm</span>.<span style="color:rgb(0,103,124)">getModuleUnlocked</span>()));</pre><pre style="margin:0px;text-indent:0px"><span style="color:rgb(9,46,100)">exitOnError</span><span style="color:rgb(0,103,124)">(</span><span style="color:rgb(9,46,100)">J</span><span style="color:rgb(0,103,124)">-></span><span style="color:rgb(0,103,124)">addIRModule</span>(<span style="color:rgb(128,0,128)">std</span>::<span style="color:rgb(0,103,124)">move</span>(<span style="font-style:italic;color:rgb(9,46,100)">tsm</span>))<span style="color:rgb(0,103,124)">)</span>;</pre><span style="color:rgb(9,46,100)">exitOnError</span><span style="color:rgb(0,103,124)">(</span><span style="color:rgb(9,46,100)">RR</span>.<span style="color:rgb(0,103,124)">run</span>()<span style="color:rgb(0,103,124)">)</span>;</blockquote>


</div><div><br></div><div>But I can't understand what's wrong with my previous approach by calling LLJIT's <span style="font-family:monospace">runConstructor()</span> method. <br></div><div>Would anyone kindly help on what part I'm missing? Thanks!<br></div><div><br></div><div>Best regards,</div><div>Haoran<br></div><div><br></div></div>