Hi all,
I need a new kind of analysis on LLVM Module, so I made a new pass to do this. This new pass extends the ModulePass class and follows the conventions used in GlobalModRefPass, which is also a Module Pass.I need the CallGraph analysis for this pass, hence I have added (addRequired(CallGraph)) in getAnalysisUsage function of this new pass. I also added it to CallGraph Analysis group through “RegisterAnalysisGroup”
This new pass is not part of any LLVM library and is not present in LLVM source tree . Rather it is part of my own project tree. I included required header files and specified the required library in the linker. It compiles and links fine but when I reach at getAnalysis function to get CallGraph analysis, it gives me following runtime error
Assertion “resover && pass has not been inserted into a Pass Manager Object” failed.
What other steps do I need to follow to get rid of this error.
Thanks
–Kapil
Hi Kapil,
Hi all,
I need a new kind of analysis on LLVM Module, so I made a new pass to do this. This new pass extends the ModulePass class and follows the conventions used in GlobalModRefPass, which is also a Module Pass.I need the CallGraph analysis for this pass, hence I have added (addRequired(CallGraph)) in getAnalysisUsage function of this new pass.
A module pass may not required CallGraph. Probably, you want to make your pass a CallGraphSCCPass, e.g. Inliner.
Hi Devang,
GlobalModRefPass is also a ModulePass and it uses CallGraph Analysis.
So, I think it should not necessary to extend CallGraphSCCPass to use
CallGraph information. Module Pass shoule be sufficient...
--Kapil
ok, but you're Registering your pass in CallGraph Analysis group.
What if you remove "RegisterAnalysisGroup" ? Is there a need ?
HI Devang,
Initially I had not added this pass to the group and I got this error regarding PassManager. I added the pass to group just to check whether that removes the error or not…
I have removed it again.
Is there any other registration required to configure pass manager for the pass?
–Kapil