Alexander Potapenko
2011-Dec-06 14:59 UTC
[LLVMdev] Assertion `PI && "Expected required passes to be initialized"' failed for AliasAnalysis.
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
Dmitry N. Mikushin
2011-Dec-06 15:33 UTC
[LLVMdev] Assertion `PI && "Expected required passes to be initialized"' failed for AliasAnalysis.
Hi Alexander, I had the same error: sincos: /home/marcusmae/rpmbuild/BUILD/llvm/lib/VMCore/PassManager.cpp:635: void llvm::PMTopLevelManager::schedulePass(llvm::Pass*): Assertion `PI && "Expected required passes to be initialized"' failed. The solution was to add: PassRegistry &Registry = *PassRegistry::getPassRegistry(); initializeCore(Registry); initializeScalarOpts(Registry); initializeIPO(Registry); initializeAnalysis(Registry); initializeIPA(Registry); initializeTransformUtils(Registry); initializeInstCombine(Registry); initializeInstrumentation(Registry); initializeTarget(Registry); before creating passes. Maybe it could help you to track down the issue. - D. 2011/12/6 Alexander Potapenko <glider at google.com>:> 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 > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
Alexander Potapenko
2011-Dec-06 16:11 UTC
[LLVMdev] Assertion `PI && "Expected required passes to be initialized"' failed for AliasAnalysis.
Adding initializeAnalysis() indeed helped:
2680 ModulePass *llvm::createThreadSanitizerPass() {
2681 PassRegistry &Registry = *PassRegistry::getPassRegistry();
2682 initializeAnalysis(Registry);
2683 return new ThreadSanitizer();
2684 }
This looks a bit awkward, but still allows me to move further.
Thanks a lot!
On Tue, Dec 6, 2011 at 7:33 PM, Dmitry N. Mikushin <maemarcus at
gmail.com> wrote:> Hi Alexander,
>
> I had the same error:
>
> sincos: /home/marcusmae/rpmbuild/BUILD/llvm/lib/VMCore/PassManager.cpp:635:
> void llvm::PMTopLevelManager::schedulePass(llvm::Pass*): Assertion `PI
> && "Expected required passes to be initialized"'
failed.
>
> The solution was to add:
>
> PassRegistry &Registry =
*PassRegistry::getPassRegistry();
> initializeCore(Registry);
> initializeScalarOpts(Registry);
> initializeIPO(Registry);
> initializeAnalysis(Registry);
> initializeIPA(Registry);
> initializeTransformUtils(Registry);
> initializeInstCombine(Registry);
> initializeInstrumentation(Registry);
> initializeTarget(Registry);
>
> before creating passes. Maybe it could help you to track down the issue.
>
> - D.
>
> 2011/12/6 Alexander Potapenko <glider at google.com>:
>> 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
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
--
Alexander Potapenko
Software Engineer
Google Moscow
Reasonably Related Threads
- [LLVMdev] Assertion `PI && "Expected required passes to be initialized"' failed for AliasAnalysis.
- [LLVMdev] Modifying address-sanitizer to prevent threads from sharing memory
- [LLVMdev] writing an alias analysis pass?
- LLVM 9.0.1-rc3 has been tagged
- [LLVMdev] Using LLVM code in projects/compiler-rt