[LLVMdev] PassManager Mysteries

David Greene dag at cray.com
Tue Jan 29 07:28:09 PST 2008


On Monday 28 January 2008 21:55, David A. Greene wrote:
> On Monday 28 January 2008 09:31:11 pm Owen Anderson wrote:
> >  From experience, an important point that is often forgotten is that
> > the order of declaration of dependencies matter.  If you declare that
> > you require pass A, and then pass B, and B doesn't preserve A, you'll
> > get an error like this.
> >
> > Just some advice from having had similar problems in the past.
>
> I'll have to double-check my code, but I don't think I have this particular
> problem.

Well, I was wrong.  I found the missing addPreserved and everything's
hunky-dorey.

BTW, -debug-pass=Details wasn't all that helpful.  An excerpt:

    Live Interval Analysis
    MachineDominator Tree Construction
    Machine Natural Loop Construction
    Iterated Register Coalescing
llvm/lib/VMCore/PassManager.cpp:938: virtual void 
llvm::PMDataManager::addLowerLevelRequiredPass(llvm::Pass*, llvm::Pass*): 
Assertion `0 && "Unable to handle Pass that requires lower level Analysis 
pass"' failed.
ftn-2116 ftn: INTERNAL  

That doesn't say anything about which pass triggered the error or which 
dependency was unavailable.  PassManager should be able to dump 
this information.

                                          -Dave



More information about the llvm-dev mailing list