[LLVMbugs] [Bug 1868] New: PassManager does not reschedule invalidated passes

bugzilla-daemon at cs.uiuc.edu bugzilla-daemon at cs.uiuc.edu
Mon Dec 17 12:02:01 PST 2007


           Summary: PassManager does not reschedule invalidated passes
           Product: libraries
           Version: trunk
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Core LLVM classes
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: criswell at uiuc.edu
                CC: llvmbugs at cs.uiuc.edu

Created an attachment (id=1300)
 --> (http://llvm.org/bugs/attachment.cgi?id=1300)
LLVM Source file that will trigger the bug

I get the following assertion failure in my tool that schedules several LLVM

test: /home/vadve/criswell/src/llvm22/lib/VMCore/PassManager.cpp:1285: virtual
void llvm::MPPassManager::addLowerLevelRequiredPass(llvm::Pass*, llvm::Pass*):
Assertion `(P->getPotentialPassManagerType() <
RequiredPass->getPotentialPassManagerType()) && "Unable to handle Pass that
requires lower level Analysis pass"' failed.

My investigation currently leads me to believe that when a pass is invalidated,
the Pass Manager does not properly reschedule it.

In the attached code, I have three passes: BottomPass, Pass1, and Pass2.  Pass1
preserves all analyses; Pass2 preserves none.  BottomPass requires both Pass1
and Pass2.  When BottomPass is added to the PassManager, PassManager will first
schedule Pass1 and Pass2.  However, Pass2 invalidates Pass1, so Pass1 is taken
off the AvailableAnalysis list in PMDataManager.  Later on, PassManager goes
looking for Pass1 and, not finding it, assumes it's a lower level pass. 
However, since it's a ModulePass (like BottomPass), it hits the assertion and

Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.

More information about the llvm-bugs mailing list