[LLVMdev] Problem getting LoopInfo inside non-LoopPass

Ryan Taylor ryta1203 at gmail.com
Thu Nov 10 10:00:26 PST 2011


1. Ok will do.
2. Ok, will do.
3. It's a CallGraphPass. I mentioned this in my first post.
4. Yep, I have the header files included, I'm not sure it would compile
otherwise (previously). I would get an error like LoopInfo not declared.

I'll try your suggestions, thanks again!

On Thu, Nov 10, 2011 at 9:57 AM, John Criswell <criswell at illinois.edu>wrote:

>  On 11/10/11 11:48 AM, Rc   Add Bcc   Edit Subject   Attach a file
> Insert: Invitation yan Taylor wrote:
>
> John,
>
>   Thanks, this does not compile though, I get this error:
>
>
> First, please CC the llvmdev list.  That way, others having the same
> question can see the conversation, and others on the list can help correct
> any errors I make.
> :)
>
>
>
> cdfg_pass.cpp:511:11: error: ‘class llvm::Function’ has no member named
> ‘getDeclaration’
>
>
> Sorry.  I believe the method name is Function::isDeclaration().
>
> BTW, you should double-check my answers (and other people's answers)
> against the LLVM doxygen documentation.  This is because:
>
> 1) I often don't take the time to consult the documentation to ensure I
> have every detail correct.
> 2) The LLVM API is fluid, so some details of it may have changed since I
> last used a particular feature.
>
>
>
> Also, when I try to pass the pointer to getAnalysis I get this error:
>
> cdfg_pass.cpp:512:41: error: no matching function for call to
> ‘<unnamed>::CDFGPass::getAnalysis(llvm::Function*&)’
>
>
> First, double check that it's a Function * and not a Function & that is
> required.
>
> Second, what type of pass is your pass?  Is it a ModulePass, a
> FunctionPass, or some other type of pass?  For a FunctionPass, no argument
> is necessary.  For a ModulePass, a Function argument is necessary.  For
> other types of passes, I do not know: you'll either have to wait for
> someone else to respond or just figure it out using trial and error.
>
> Third, are you including the header file that provides the definition of
> LoopInfo?  If not, that could be a problem.
>
> -- John T.
>
>
>
> Here is the code I'm using:
>
>         Function *F = CGNode->getFunction();
>         errs()<<"#Get Loop Info\n";
>         if (!(F->getDeclaration()))
>                 LoopInfo &LI = getAnalysis<LoopInfo>(F);
>
>
> On Thu, Nov 10, 2011 at 9:13 AM, John Criswell <criswell at illinois.edu>wrote:
>
>>  On 11/10/11 11:06 AM, Ryan Taylor wrote:
>>
>> LLVMers,
>>
>>    I am doing a CallGraphPass but would like to get the LoopInfo of the
>> functions inside this pass, is this possible? Currently I have a function
>> inside the CallGraph struct:
>>
>>     void getAnalysisUsage(AnalysisUsage &AU) const {
>>         AU.addRequired<LoopInfo>();
>>         AU.addPreserved<LoopInfo>();
>>     }
>>
>> And later inside the pass I am calling:
>>
>> LoopInfo &LI = getAnalysis<LoopInfo>();
>>
>> I have also tried to pass the Function pointer to getAnalysis but that
>> doesn't work either. With the above code my error is:
>>
>>
>>  1) You may need to pass a Function pointer or reference if your pass is
>> not a FunctionPass (e.g., if it is a ModulePass).
>>
>> 2) If you have to specify a Function pointer or reference, you need to
>> make sure that the Function is *not* a declaration:
>>
>> if (!(F->getDeclaration()))
>>     getAnalysis<LoopInfo>(F);
>>
>> -- John T.
>>
>>
>> UNREACHABLE executed!
>> 0  opt             0x00000000008edc2f
>> 1  opt             0x00000000008edfda
>> 2  libpthread.so.0 0x00007f9c8e69bc60
>> 3  libc.so.6       0x00007f9c8d986d05 gsignal + 53
>> 4  libc.so.6       0x00007f9c8d98aab6 abort + 390
>> 5  opt             0x00000000008da974
>> llvm::llvm_unreachable_internal(char const*, char const*, unsigned int) +
>> 356
>> 6  opt             0x000000000087e046
>> 7  opt             0x0000000000882b45
>> llvm::PMDataManager::add(llvm::Pass*, bool) + 741
>> 8  opt             0x000000000087f413 llvm::PassManager::add(llvm::Pass*)
>> + 259
>> 9  opt             0x00000000004ab9be main + 2174
>> 10 libc.so.6       0x00007f9c8d971eff __libc_start_main + 255
>> 11 opt             0x000000000049f5f9
>> Stack dump:
>>
>>
>> Any help would be appreciated, thanks!
>>
>>
>>
>>  _______________________________________________
>> LLVM Developers mailing listLLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.eduhttp://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>
>>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20111110/a586fa66/attachment.html>


More information about the llvm-dev mailing list