[LLVMdev] Assertion `PI && "Expected required passes to be initialized"' failed for AliasAnalysis.

Alexander Potapenko glider at google.com
Tue Dec 6 06:59:33 PST 2011


Dear lazydev,

I'm writing an instrumentation pass that depends on AliasAnalysis. My
getAnalysisUsage() looks as follows:

2453 void ThreadSanitizer::getAnalysisUsage(AnalysisUsage &AU) const {
2454   AU.addRequired<TargetData>();
2455   AU.addRequired<AliasAnalysis>();
2456 }

and the pass initialization:

2668 char ThreadSanitizer::ID = 0;
2669 INITIALIZE_PASS_BEGIN(ThreadSanitizer, "tsan",
2670                       "Compile-time instrumentation for runtime "
2671                       "data race detection with ThreadSanitizer",
2672                       false, false)
2673 INITIALIZE_PASS_DEPENDENCY(TargetData)
2674 INITIALIZE_AG_DEPENDENCY(AliasAnalysis)
2675 INITIALIZE_PASS_END(ThreadSanitizer, "tsan",
2676                     "Compile-time instrumentation for runtime "
2677                     "data race detection with ThreadSanitizer",
2678                     false, false)
2679


However when I run Clang with my pass enabled, I get the following error:
$ clang_build_Linux/Release+Asserts/bin/clang -fthread-sanitizer -c t.c
CREATE
clang: /usr/local/google/tsan-llvm/data-race-test/clang_src/lib/VMCore/PassManager.cpp:634:
void llvm::PMTopLevelManager::schedulePass(llvm::Pass*): Assertion `PI
&& "Expected required passes to be initialized"' failed.
0  clang           0x0000000001d1757f
1  clang           0x0000000001d197f2
2  libpthread.so.0 0x00007fe8a157d8f0
3  libc.so.6       0x00007fe8a086ca75 gsignal + 53
4  libc.so.6       0x00007fe8a08705c0 abort + 384
5  libc.so.6       0x00007fe8a0865941 __assert_fail + 241
6  clang           0x0000000001cb22a7
7  clang           0x0000000001cb4716 llvm::PassManager::add(llvm::Pass*) + 262
8  clang           0x00000000011e0ea6
llvm::PassManagerBuilder::addExtensionsToPM(llvm::PassManagerBuilder::ExtensionPointTy,
llvm::PassManagerBase&) const + 406
9  clang           0x000000000083b5e1
clang::EmitBackendOutput(clang::DiagnosticsEngine&,
clang::CodeGenOptions const&, clang::TargetOptions const&,
clang::LangOptions const&, llvm::Module*, clang::BackendAction,
llvm::raw_ostream*) + 897
10 clang           0x0000000000838f61
clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) +
353
11 clang           0x0000000000986caf clang::ParseAST(clang::Sema&, bool) + 511
12 clang           0x0000000000837b34 clang::CodeGenAction::ExecuteAction() + 68
13 clang           0x00000000006eb6b5
clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 373
14 clang           0x00000000006d3d59
clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 1401
15 clang           0x00000000006c9fc7 cc1_main(char const**, char
const**, char const*, void*) + 791
16 clang           0x00000000006d2b27 main + 7175
17 libc.so.6       0x00007fe8a0857c4d __libc_start_main + 253
18 clang           0x00000000006c7bc9
Stack dump:
0.	Program arguments:
/usr/local/google/tsan-llvm/data-race-test/clang_build_Linux/Release+Asserts/bin/clang
-cc1 -triple x86_64-unknown-linux-gnu -emit-obj -mrelax-all
-disable-free -main-file-name t.c -mrelocation-model static
-mdisable-fp-elim -masm-verbose -mconstructor-aliases -munwind-tables
-target-cpu x86-64 -target-linker-version 2.20.1
-momit-leaf-frame-pointer -coverage-file t.o -resource-dir
/usr/local/google/tsan-llvm/data-race-test/clang_build_Linux/Release+Asserts/bin/../lib/clang/3.1
-fmodule-cache-path /var/tmp/clang-module-cache -internal-isystem
/usr/local/include -internal-isystem
/usr/local/google/tsan-llvm/data-race-test/clang_build_Linux/Release+Asserts/bin/../lib/clang/3.1/include
-internal-externc-isystem /usr/include/x86_64-linux-gnu
-internal-externc-isystem /include -internal-externc-isystem
/usr/include -fdebug-compilation-dir
/usr/local/google/tsan-llvm/data-race-test -ferror-limit 19
-fmessage-length 150 -fthread-sanitizer -fgnu-runtime
-fobjc-runtime-has-arc -fobjc-runtime-has-weak -fobjc-fragile-abi
-fdiagnostics-show-option -fcolor-diagnostics -o t.o -x c t.c


Do I need something besides INITIALIZE_AG_DEPENDENCY in order to
initialize AliasAnalysis? (I've verified that removing TargetData does
not fix the problem)

TIA,
Alexander Potapenko
Software Engineer
Google Moscow



More information about the llvm-dev mailing list