<div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">Wow, commenting those two lines worked out fine for me, thanks!</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">

On 9 May 2013 09:34, Giacomo Tagliabue <span dir="ltr"><<a href="mailto:giacomo.tag@gmail.com" target="_blank">giacomo.tag@gmail.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"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">Thanks,<br>Also, every method inherited by LoopBase causes the same error, while Loop methods go smooth.</div></div>

<div class="HOEnZb"><div class="h5"><div class="gmail_extra">
<br><br><div class="gmail_quote">On 9 May 2013 01:05, Andrew Trick <span dir="ltr"><<a href="mailto:atrick@apple.com" target="_blank">atrick@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div style="word-wrap:break-word"><div><div><br><div><div>On May 8, 2013, at 7:43 PM, Giacomo Tagliabue <<a href="mailto:giacomo.tag@gmail.com" target="_blank">giacomo.tag@gmail.com</a>> wrote:</div><br><blockquote type="cite">


<div style="letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">


<div class="gmail_default">Hello,<br>I am building a loop pass following these instructions: <a href="http://llvm.org/docs/WritingAnLLVMPass.html" style="font-family:arial" target="_blank">http://llvm.org/docs/WritingAnLLVMPass.html</a><br>


Everything works fine, I did it many times for Function Passes, but in the runOnLoopmethod, whenever I call a method of the loop L passed as argument, for example L->begin(), I get the following error:</div><div class="gmail_default">


<br></div><div class="gmail_default" style="font-size:13px;font-family:arial,sans-serif"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">


<font face="arial, helvetica, sans-serif">opt: symbol lookup error: /home/giacomo/llvmcsfv/Debug+Asserts/lib/Acsl.so: undefined symbol: _ZNK4llvm8LoopBaseINS_10BasicBlockENS_4LoopEE5beginEv</font></blockquote><br>Where Acsl is the name of the loadable module. If I remove all the instructions from <span style="font-family:arial,helvetica,sans-serif">runOnPass but a debug print, it works fine (it prints it), so the problem is not the module.<br>


Does anybody have any Idea?</span></div><div class="gmail_default" style="font-size:13px;font-family:arial,sans-serif"><span style="font-family:arial,helvetica,sans-serif">Thank you very much,<br>Giacomo</span></div></div>


</div></div></blockquote><br></div></div></div><div>I'm not sure why your dynamic linker looks in Acsl.so. llvm::LoopBase<llvm::BasicBlock, llvm::Loop>::begin() is explicitly instantiated in LoopInfo.cpp. With a debug build on darwin, that symbol is undefined in my dynamically loaded module, but exported by the opt binary. So a dynamically loaded loop pass as you described works fine for me.</div>


<div><br></div><div>Someone else should try this on linux with shared libs.</div><div><br></div><div>You can also try removing these lines from LoopInfo.h, which seem superfluous to me:</div><div><div><br></div><div><div>


__extension__ extern template class LoopBase<BasicBlock, Loop>;</div></div><div><div>__extension__ extern template class LoopInfoBase<BasicBlock, Loop>;</div><div><br></div></div><div>-Andy</div><div><br></div>


</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>