[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