[LLVMdev] want to use CallGraph Pass in llc

Devang Patel dpatel at apple.com
Mon Jun 2 13:29:57 PDT 2008


On Jun 2, 2008, at 12:38 AM, Paul Arndt wrote:

> Hi all,
> the CallGraph pass is only available in opt. Is there any  
> substantial reason
> for that? Or is it only because it seems not to be useful for llc?

No, that's not true.

> I want to use it in an backend that is derived from the CBackend. I  
> need the
> information what functions are called in every other function to build
> communication struktures between the functions. The backend is  
> generating
> VHDL from C code. (VHDL is a hardware description language, which  
> means it is
> used to generate hardware, for those who are not familiar with this.)
> I've managed to compile my backend with the CallGraph pass, but when  
> it try to
> use it, I get an error, which I could't fix until now.
> llc --load=/home/paul/LLVM/install/llvm-2.2/lib/MParSchedule.so -- 
> load=/home/paul/LLVM/install/llvm-2.2/lib/libLLVMVHDLBackend.so -f - 
> march=vhdl
> test.o -o llvm.vhd
> llc: /home/paul/LLVM/src/llvm-2.2/lib/VMCore/PassManager.cpp:922:  
> virtual void
> llvm::PMDataManager::addLowerLevelRequiredPass(llvm::Pass*,  
> llvm::Pass*):
> Assertion `0 && "Unable to handle Pass that requires lower level  
> Analysis
> pass"' failed.
> llc[0x85e922c]
> /lib/i686/cmov/libc.so.6(abort+0x101)[0x401e6981]
> /lib/i686/cmov/libc.so.6(__assert_fail+0xee)[0x401de10e]
> llc(llvm::PMDataManager::addLowerLevelRequiredPass(llvm::Pass*,
> llvm::Pass*)+0x7d)[0x857da0d

This error indicates that pass manager is not able to schedule your  

  918   // Module Level pass may required Function Level analysis info
  919   // (e.g. dominator info). Pass manager uses on the fly  
function pass manager
  920   // to provide this on demand. In that case, in Pass manager  
  921   // module level pass is requiring lower level analysis info  
managed by
  922   // lower level pass manager.
  924   // When Pass manager is not able to order required analysis  
info, Pass manager
  925   // checks whether any lower level manager will be able to  
provide this
  926   // analysis info on demand or not.
  927   assert (0 && "Unable to handle Pass that requires lower level  
Analysis pass");

What is the skeleton of your pass structure ?

Use -debug-pass=? argument on the llc command line to understand what  
pass manager is trying to do. Try 'llc --help-hidden' for more info.


More information about the llvm-dev mailing list