[LLVMdev] Conflicting passes?

Domagoj D domagoj at engineer.com
Wed May 3 09:06:13 PDT 2006


Hi,

> On Wed, 3 May 2006, Domagoj D wrote:
> > I thought so. However, it's not clear to me why "preservation" is 
> > required at all?
> > That's just an optimization. The PassManager should be able to 
> > run passes with
> > interdependencies by serializing them (for example in the order as they were
> > added to the queue).
> >
> > This way, users simply have no other choice but to write batch 
> > scripts, unless
> > if I'm missing something.
> 
> Please read:
> http://llvm.org/docs/WritingAnLLVMPass.html
> 
> carefully.
> 
> -Chris

I have and found nothing that contradicts what I said:
a) I still don't see a way to use such conflicting passes within a
single pass that requires them both

b) Sequencing and "property preservation" still look like optimization
to me (a very useful, but also limiting one). If runOnFunction() calls
are assumed to be independent, for each function, the PassManager could
call:

UnifyFunctionExitNodes which destroys all properties, and 
LowerSwitchID, which should be able to rebuild what it needs.

The order might be implementation-dependent, and that's the only problem
I see. However, in this case those two passes do orthogonal transforms,
and it doesn't really matter which runs first. Even if it does, the
sequence of addRequired<>() calls might be (perhaps) used to handle
that. 


I'm still striving to understand LLVM architecture, both its limitations
and virtues... Any help would be appreciated.

Thx.

Domagoj



-- 
___________________________________________________
Play 100s of games for FREE! http://games.mail.com/





More information about the llvm-dev mailing list