[LLVMdev] PassManager

Devang Patel dpatel at apple.com
Tue Nov 7 10:34:34 PST 2006


Hi Vikram,

On Nov 7, 2006, at 10:19 AM, Vikram Adve wrote:

> Chris and Devang,
>
> Before you implement the LoopPassManager class, I'd like to discuss
> this a little bit.  I have a suggestion and a question; we can
> discuss this now or later, as you wish:
>
> 1. The LoopPassManager might become much simpler if the more complex
> loop passes are given control over how they iterate over the loops,
> rather always rely on the manager to enumerate the loops in some
> fixed order.  Then the pass could be responsible for making sure that
> it handles issues like loops that are deleted during the pass.

LoopPassManager will manage the LoopInfo. It will maintain loop  
priority queue and expose APIs to add/remove loops that  
transformations can use.


> For
> example, some algorithms make internal decisions about which loops to
> handle together and also what order to visit them.  For example, the
> LoopFusion class may need to inspect loop headers to decide which
> subsets of loops to fuse and then fuse them as it goes.

LoopPassManager will expose two virtual methods.

1) runOnLoop(Loop &L, LoopPassManger &LPM)

      Loop transformation can override to process this particular loop.

2) runOnFunctionBody(Function &F, Loop&L, LoopPassManager &LPM)

     LoopFusion and others can override this to to analyze and process  
multiple loops.

>
> I think you could do this just by adding an iterator method somewhere
> that enumerates sets of loops (i.e,. returns a vector of Loop
> objects).  The bottom-up iterator could just be a default choice.
>
> 2. The question is how you plan to handle unimodular
> transformations.  I think it's a very nice abstraction and a number
> of loop transforms should be implemented using that rather than more
> ad hoc code, e.g., interchange, reversal, skewing.  But that requires
> implementing support for unimodular transforms before those passes
> are implemented.

I have not yet spent enough time to think about unimodular  
transformation framework implementation.

-
Devang




More information about the llvm-dev mailing list