[LLVMdev] llvm passes
Ryan M. Lefever
lefever at crhc.uiuc.edu
Mon Sep 25 12:17:44 PDT 2006
So, am I correct that the implication of what you're saying is that if
pass X requires pass Y, then pass Y does not necessarily run to
completion on every component of a program, before pass X runs.
Furthermore, if those passes X and Y are both function passes, then when
pass X runs on function F, the last function Y will have run on is
Chris Lattner wrote:
> On Fri, 22 Sep 2006, Ryan M. Lefever wrote:
> Imagine you have a functionpass X, for example DominatorSet. DominatorSet
> runs on a function at a time and captures information about the current
> function's dominator information in its instance variables.
> Now you have ModulePass Y that runs and requires X to be run. Because it
> is a functionpass, X will be run on every function in the module before Y
> starts. Further, because X only has one set of instance variables, Y
> could see, at most, information for one function.
I assumed that X would run to completion before pass Y ran and that pass
X would have stored instance data for each function in some sort of list
or map. I think my confusion must be with what type of pass to use. Am
I correct that if I have a pass M that runs on each function but needs
to collect data from every function before it can be used by another
pass N, then M should be a ModulePass?
More information about the llvm-dev