[LLVMdev] LoopPass symbol error
giacomo.tag at gmail.com
Thu May 9 09:56:14 PDT 2013
Wow, commenting those two lines worked out fine for me, thanks!
On 9 May 2013 09:34, Giacomo Tagliabue <giacomo.tag at gmail.com> wrote:
> Also, every method inherited by LoopBase causes the same error, while Loop
> methods go smooth.
> On 9 May 2013 01:05, Andrew Trick <atrick at apple.com> wrote:
>> On May 8, 2013, at 7:43 PM, Giacomo Tagliabue <giacomo.tag at gmail.com>
>> I am building a loop pass following these instructions:
>> 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:
>> opt: symbol lookup error:
>>> /home/giacomo/llvmcsfv/Debug+Asserts/lib/Acsl.so: undefined symbol:
>> Where Acsl is the name of the loadable module. If I remove all the
>> instructions from runOnPass but a debug print, it works fine (it prints
>> it), so the problem is not the module.
>> Does anybody have any Idea?
>> Thank you very much,
>> 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.
>> Someone else should try this on linux with shared libs.
>> You can also try removing these lines from LoopInfo.h, which seem
>> superfluous to me:
>> __extension__ extern template class LoopBase<BasicBlock, Loop>;
>> __extension__ extern template class LoopInfoBase<BasicBlock, Loop>;
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-dev