Paul,
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
pass.
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
terminology,
921 // module level pass is requiring lower level analysis info
managed by
922 // lower level pass manager.
923
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.
-
Devang