[LLVMdev] want to use CallGraph Pass in llc
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
> 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 -
> test.o -o llvm.vhd
> llc: /home/paul/LLVM/src/llvm-2.2/lib/VMCore/PassManager.cpp:922:
> virtual void
> Assertion `0 && "Unable to handle Pass that requires lower level
> pass"' failed.
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
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
926 // analysis info on demand or not.
927 assert (0 && "Unable to handle Pass that requires lower level
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