[llvm-commits] [llvm] r132520 - /llvm/trunk/lib/VMCore/PassManager.cpp

Andrew Trick atrick at apple.com
Thu Jun 2 17:58:36 PDT 2011


Preemptive review: Sorry for the lack of test case. It didn't seem worth adding a fake driver to the llvm build!
-Andy

On Jun 2, 2011, at 5:48 PM, Andrew Trick wrote:

> Author: atrick
> Date: Thu Jun  2 19:48:58 2011
> New Revision: 132520
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=132520&view=rev
> Log:
> Basic PassManager diagnostics.
> 
> Added asserts whenever attempting to use a potentially
> uninitialized pass. This helps people trying to develop a new pass and
> people trying to understand the bug reports filed by the former people.
> 
> Modified:
>    llvm/trunk/lib/VMCore/PassManager.cpp
> 
> Modified: llvm/trunk/lib/VMCore/PassManager.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/PassManager.cpp?rev=132520&r1=132519&r2=132520&view=diff
> ==============================================================================
> --- llvm/trunk/lib/VMCore/PassManager.cpp (original)
> +++ llvm/trunk/lib/VMCore/PassManager.cpp Thu Jun  2 19:48:58 2011
> @@ -632,6 +632,7 @@
>       Pass *AnalysisPass = findAnalysisPass(*I);
>       if (!AnalysisPass) {
>         const PassInfo *PI = PassRegistry::getPassRegistry()->getPassInfo(*I);
> +        assert(PI && "Expected required passes to be initialized");
>         AnalysisPass = PI->createPass();
>         if (P->getPotentialPassManagerType () ==
>             AnalysisPass->getPotentialPassManagerType())
> @@ -686,6 +687,7 @@
>     // If Pass not found then check the interfaces implemented by Immutable Pass
>     const PassInfo *PassInf =
>       PassRegistry::getPassRegistry()->getPassInfo(PI);
> +    assert(PassInf && "Expected all immutable passes to be initialized");
>     const std::vector<const PassInfo*> &ImmPI =
>       PassInf->getInterfacesImplemented();
>     for (std::vector<const PassInfo*>::const_iterator II = ImmPI.begin(),
> @@ -727,9 +729,11 @@
>   for (SmallVector<ImmutablePass *, 8>::const_iterator I =
>        ImmutablePasses.begin(), E = ImmutablePasses.end(); I != E; ++I)
>     if (const PassInfo *PI =
> -          PassRegistry::getPassRegistry()->getPassInfo((*I)->getPassID()))
> +        PassRegistry::getPassRegistry()->getPassInfo((*I)->getPassID())) {
> +      assert(PI && "Expected all immutable passes to be initialized");
>       if (!PI->isAnalysisGroup())
>         dbgs() << " -" << PI->getPassArgument();
> +    }
>   for (SmallVector<PMDataManager *, 8>::const_iterator I = PassManagers.begin(),
>          E = PassManagers.end(); I != E; ++I)
>     (*I)->dumpPassArguments();
> @@ -1183,6 +1187,12 @@
>   for (unsigned i = 0; i != Set.size(); ++i) {
>     if (i) dbgs() << ',';
>     const PassInfo *PInf = PassRegistry::getPassRegistry()->getPassInfo(Set[i]);
> +    if (!PInf) {
> +      // Some preserved passes, such as AliasAnalysis, may not be initialized by
> +      // all drivers.
> +      dbgs() << " Uninitialized Pass";
> +      continue;
> +    }
>     dbgs() << ' ' << PInf->getPassName();
>   }
>   dbgs() << '\n';
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits




More information about the llvm-commits mailing list