[llvm-dev] Confusing ERROR with LoopAccessLegacyAnalysis: Pass 'Unnamed pass: implement Pass::getPassName()' is not initialized. (original) (raw)
Michael Kruse via llvm-dev llvm-dev at lists.llvm.org
Fri Feb 1 14:10:49 PST 2019
- Previous message: [llvm-dev] LLVM buildmaster will be restarted tonight
- Next message: [llvm-dev] Confusing ERROR with LoopAccessLegacyAnalysis: Pass 'Unnamed pass: implement Pass::getPassName()' is not initialized.
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hi,
you will have to call initializeLoopAccessLegacyAnalysisPass(*PassRegistry::getPassRegistry()) before you can use it as a pass dependency. This is usually done by a sequence of
INITIALIZE_PASS_BEGIN(YourPass, "your_pass", "Your Pass Name", false, false) INITIALIZE_PASS_DEPENDENCY(LoopAccessLegacyAnalysis) INITIALIZE_PASS_END(YourPass, "your_pass", "Your Pass Name", false, false)
which also creates an initializer for your pass: initializeYourPassPass which you should call in some way in your application.
Michael
Am Fr., 1. Feb. 2019 um 12:58 Uhr schrieb Tingyuan LIANG via llvm-dev <llvm-dev at lists.llvm.org>:
Dear all, I write a new LoopPass which wants to use passes including LoopInfoWrapperPass, ScalarEvolutionWrapperPass and LoopAccessLegacyAnalysis. Therefore, I implement the following code based on LLVM 9.0.0: ===================================================================== bool LoopInformationCollect::runOnLoop(Loop *L, LPPassManager &) { auto &SE = getAnalysis().getSE(); auto &LI = getAnalysis().getLoopInfo(); // auto *LAA = &getAnalysis(); if (Loopid.find(L)==Loopid.end()) // traverse instructions in the block assign instruction ID { Loopid[L] = ++LoopCounter; } // *Loopout << "---------------Loop report----------------\n";_ _// *Loopout << LAA->getInfo(L).getReport(); return false; } char LoopInformationCollect::ID = 0; void LoopInformationCollect::getAnalysisUsage(AnalysisUsage &AU) const { AU.addRequired(); AU.addRequired(); AU.addRequired(); AU.setPreservesAll(); } ===================================================================== I can make the project with GNU make successfully but get the error "Pass 'Unnamed pass: implement Pass::getPassName()' is not initialized." during runtime. When I remove the line "AU.addRequired();" and make the project again, I run the program successfully. Detailed error report is shown below: --------------------------------------------------------------------------------------------------------- Pass 'Unnamed pass: implement Pass::getPassName()' is not initialized. Verify if there is a pass dependency cycle. Required Passes: Natural Loop Information Scalar Evolution Analysis --------------------------------------------------------------------------------------------------------- Please note that I am not using "opt" in the terminal to run the passes but utilize PassManager in a main() function. It seems that the problem is caused by "LoopAccessLegacyAnalysis", since I have not faced this problem with other passes. I am wondering how I can fix this situation. Thanks a lot for your time and suggestions! Best regards, ------------------------------------------ Tingyuan LIANG MPhil Student Department of Electronic and Computer Engineering The Hong Kong University of Science and Technology
LLVM Developers mailing list llvm-dev at lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
- Previous message: [llvm-dev] LLVM buildmaster will be restarted tonight
- Next message: [llvm-dev] Confusing ERROR with LoopAccessLegacyAnalysis: Pass 'Unnamed pass: implement Pass::getPassName()' is not initialized.
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]