[LLVMdev] PassManager Dependence Question

Devang Patel dpatel at apple.com
Fri Sep 19 15:28:06 PDT 2008


On Sep 19, 2008, at 3:20 PM, David Greene wrote:

> On Friday 19 September 2008 17:11, David Greene wrote:
>
>> What I'd really like to do is have Pass X re-run but not Pass Y.   
>> Pass Y
>> only uses some bookkeeping from Pass X to speed itself up.  Having  
>> Pass X
>> not re-run could cause Pass Y to give wrong answers, but once Pass  
>> X is
>> up-to-date, Pass Y will be fine.
>
> To make this a bit more concrete:
>
> I noticed that the Verifier takes a VERY long time on large  
> programs.  This
> appears to be due to its checking of defs dominating uses.  When a def
> and use are in the same BasicBlock, DominatorTrees iterates over the
> block until it finds one or the other.  Since Verifier does this for  
> each
> Instruction, this is an n^2 algorithm.
>
> Now, I could go and rewrite Verifier to be a little smarter about  
> how it
> checks this (with a fair amount of pain, I would add) but that  
> doesn't help
> all of the other passes that want to know if two instructions have a  
> dominance
> relationship.
>
> So I thought about adding a pass that simply numbers Instructions,  
> have
> DominatorTrees depend on that pass and then the dominates() question  
> can just
> return whether one Instruction number is > the other.
>
> The number will get out of date as soon as Instructions are added or  
> reordered
> (deleting instructions should be ok),

At this point isn't dominator info dirty ? In other words, Y in your  
example is invalidated here.

-
Devang

> but I don't want to go and recalculate
> all dominator information.  I just need to update the numbering.
>
>                                                            -Dave
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev




More information about the llvm-dev mailing list