[LLVMdev] llvm passes
Ryan M. Lefever
lefever at crhc.uiuc.edu
Fri Sep 22 11:11:09 PDT 2006
In the instructions for writing LLVM passes, it says "[c]urrently it is
illegal for a ModulePass to require a FunctionPass. This is because
there is only one instance of the FunctionPass object ever created, thus
nowhere to store information for all of the functions in the program at
the same time."
I'm a little confused by that. It was my understanding that if pass X
required pass Y, then pass Y would have to fully run and build up its
internal data structures before pass X ran. Then, when pass X was run,
X would call getAnalysis<Y> and get a reference to the pass Y object,
which it could query for information stored during pass Y's execution.
So, I'm wondering why the types of the passes matter. The statement
that there would be "nowhere to store information for all of the
functions in the program," confuses me. I assumed that information for
all of the functions processed by pass Y would be retained in internal
data structures specific to Y.
Can someone please help me figure out where I'm going wrong?
More information about the llvm-dev