[LLVMdev] InstVisitor usage problem

Jin Huang 54jin.huang at gmail.com
Thu Jan 9 18:50:18 PST 2014


I found that this error is caused by the visit(M) ,once I delete this. It
runs without errors.
And, I found that some of my previous pass also can not run(didn't happen
before) normally with the same error. If I delete the code which will
reference the Module &M, the error disappear.
That is very strange. What's wrong with that?


2014/1/9 Jin Huang <54jin.huang at gmail.com>

> Sorry, I copied  it from the shell, so the format may be not right! I used
> the opt command just like you wrote!
>
> Thanks.
>
> -JinHuang
>
>
> 2014/1/9 Arnaud Allard de Grandmaison <arnaud.adegm at gmail.com>
>
>> The opt invocation looks weird to me. I would expect something like:
>>
>> opt -load /home/king/llvm/Release+Asserts/lib/instVisit.so -visitInst
>> load.bc
>>
>> Cheers,
>> --
>> Arnaud
>>
>>
>> On Thu, Jan 9, 2014 at 1:49 PM, JinHuang <54jin.huang at gmail.com> wrote:
>>
>>> Hi.All
>>> I had a problem in using llvm::InstVisitor class, my pass is like that:
>>>
>>> using namespace llvm;
>>>
>>> namespace
>>> {
>>>         class InstVisit : public ModulePass,
>>>                                                 public
>>> InstVisitor<InstVisit>
>>>         {
>>>                 public :
>>>                         static char ID;
>>>                         InstVisit():ModulePass(ID){}
>>>
>>>                         virtual bool runOnModule(Module &M)
>>>                         {
>>>                                 visit(M);
>>>                                 return false;
>>>                         }
>>>
>>>                         void visitStoreInst(StoreInst &SI)
>>>                         {
>>>                                 errs()<<"a store inst:"<<&SI<<"\n";
>>>                         }
>>>         };
>>>
>>>          char InstVisit::ID = 0;
>>>          static RegisterPass<InstVisit>
>>>                  X("visitInst","visit inst test");
>>> }
>>>
>>> then I use
>>> opt -load /home/king/llvm/Release+Asserts/lib/instVisit.so
>>> -visitInst<load.bc> /dev/null
>>> to run the pass. but it appears such errors:
>>>
>>> 0  opt             0x00000000012700d2
>>> llvm::sys::PrintStackTrace(_IO_FILE*)
>>> + 34
>>> 1  opt             0x000000000126fd29
>>> 2  libpthread.so.0 0x00007f9ba0336bd0
>>> 3  instVisit.so    0x00007f9b9f33a200
>>> 4  opt             0x00000000012081ef
>>> llvm::MPPassManager::runOnModule(llvm::Module&) + 655
>>> 5  opt             0x0000000001209f7f
>>> llvm::PassManagerImpl::run(llvm::Module&) + 223
>>> 6  opt             0x000000000057e1ac main + 3772
>>> 7  libc.so.6       0x00007f9b9f55eea5 __libc_start_main + 245
>>> 8  opt             0x000000000058fe65
>>> Stack dump:
>>> 0.      Program arguments: opt -load
>>> /home/king/llvm/Release+Asserts/lib/instVisit.so -visitInst
>>> 1.      Running pass 'visit inst test' on module '<stdin>'.
>>> Segmentation fault (core dumped)
>>>
>>> the load.c is :
>>>
>>> int main() {
>>>   int x, y, z;
>>>
>>>   x = 12;
>>>   y = x + 22;  /* load value of x that was just stored */
>>>   z = y + 33;  /* load value of y that was just stored */
>>>   return z;
>>> }
>>>
>>> there is no stdin in the program .but why it says "Running pass 'visit
>>> inst
>>> test' on module '<stdin>'."
>>>
>>> Thank You!
>>>
>>> -JinHuang
>>>
>>>
>>>
>>>
>>> -----
>>> Kind Regards!
>>> -JinHuang
>>> --
>>> View this message in context:
>>> http://llvm.1065342.n5.nabble.com/InstVisitor-usage-problem-tp64909.html
>>> Sent from the LLVM - Dev mailing list archive at Nabble.com.
>>> _______________________________________________
>>> LLVM Developers mailing list
>>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>>
>>
>>
>


-- 
Kind Regards!
-Jin Huang
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140110/c36f7b3f/attachment.html>


More information about the llvm-dev mailing list