[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