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

Tingyuan LIANG via llvm-dev llvm-dev at lists.llvm.org
Sun Feb 3 05:07:04 PST 2019


Dear Michael,

    Thanks a lot for your suggestion but I not sure whether it is caused by this initialization because for example, I do not do such initialization for LoopInfoWrapperPass in my code but it works fine.

    I tried your solution for the pass but got the following compilation error ----> namespace "llvm" has no member "initializeLoopInformationCollectPass".

    Such error is raised from the macro define: INITIALIZE_PASS_END. Does it mean I need to specially define such function in the LLVM namespace?

    Thanks again for your time and patience!

Best regards,
------------------------------------------
Tingyuan LIANG
MPhil Student
Department of Electronic and Computer Engineering
The Hong Kong University of Science and Technology
________________________________
From: Michael Kruse <llvmdev at meinersbur.de>
Sent: Saturday, February 2, 2019 6:10 AM
To: Tingyuan LIANG
Cc: llvm-dev at lists.llvm.org
Subject: Re: [llvm-dev] Confusing ERROR with LoopAccessLegacyAnalysis: Pass 'Unnamed pass: implement Pass::getPassName()' is not initialized.

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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190203/c3795118/attachment.html>


More information about the llvm-dev mailing list