[llvm-dev] Confusing ERROR with LoopAccessLegacyAnalysis: Pass 'Unnamed pass: implement Pass::getPassName()' is not initialized.

Michael Kruse via llvm-dev llvm-dev at lists.llvm.org
Fri Feb 1 14:10:49 PST 2019


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<ScalarEvolutionWrapperPass>().getSE();
>     auto &LI = getAnalysis<LoopInfoWrapperPass>().getLoopInfo();
>     // auto *LAA = &getAnalysis<LoopAccessLegacyAnalysis>();
>     if (Loop_id.find(L)==Loop_id.end()) // traverse instructions in the block assign instruction ID
>     {
>         Loop_id[L] = ++Loop_Counter;
>     }
>     // *Loop_out << "---------------Loop report----------------\n";
>     // *Loop_out << LAA->getInfo(L).getReport();
>     return false;
> }
>
> char LoopInformationCollect::ID = 0;
>
> void LoopInformationCollect::getAnalysisUsage(AnalysisUsage &AU) const {
>     AU.addRequired<LoopInfoWrapperPass>();
>     AU.addRequired<ScalarEvolutionWrapperPass>();
>     AU.addRequired<LoopAccessLegacyAnalysis>();
>     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<LoopAccessLegacyAnalysis>();" 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


More information about the llvm-dev mailing list