Skip to content

Assertion failure in PassManager #1738

@llvmbot

Description

@llvmbot
Bugzilla Link 1366
Resolution DUPLICATE
Resolved on Feb 22, 2010 12:50
Version trunk
OS Linux
Reporter LLVM Bugzilla Contributor

Extended Description

The following piece of code:

#include "llvm/Pass.h"
#include "llvm/Analysis/Dominators.h"
#include "llvm/Analysis/PostDominators.h"

using namespace llvm;

class PathExpressions : public FunctionPass {
public:

virtual void getAnalsisUsage(AnalysisUsage &AU) const {
    AU.addRequired<DominatorTree>();
    AU.addRequired<PostDominatorTree>();
}

virtual bool runOnFunction(Function &F) {
    DominatorTree &DT = getAnalysis<DominatorTree>();
    PostDominatorTree &PDT = getAnalysis<PostDominatorTree>();
    return false;
}

};

namespace {
RegisterPass P("pathexpr", "Compute path expressions.");
} // End of anonymous namespace


when compiled as a loadable module triggers an assertion:

opt -load=out.so -disable-output -disable-verify -debug-pass=Details -pathexpr
anybc.bc

Pass Arguments: -pathexpr
Target Data Layout
ModulePass Manager
FunctionPass Manager
Compute path expressions.
-- Compute path expressions.
0x114f2b0 Executing Pass 'Function Pass Manager' on Module 'anybc.bc...
0xe32bf0 Executing Pass 'Compute path expressions.' on Function
'control_printf...
opt: /work/projects/llvm/include/llvm/PassAnalysisSupport.h:191: AnalysisType&
llvm::Pass::getAnalysisID(const llvm::PassInfo*) const [with AnalysisType =
llvm::DominatorTree]: Assertion `ResultPass && "getAnalysis*() called on an
analysis that was not " "'required' by pass!"' failed.
opt((anonymous namespace)::PrintStackTrace()+0x17)[0xa20ba7]
opt((anonymous namespace)::SignalHandler(int)+0x10e)[0xa20e76]

Domagoj

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions