[LLVMdev] PassManager Dependence Question

Devang Patel dpatel at apple.com
Fri Sep 19 15:50:44 PDT 2008


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

>>> 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.
>
> I don't think so because the control flow graph hasn't necessarily  
> been
> updated.

Well, one of the domiantor info interface is
	bool dominates(Instruction *A, Instruction *B);
This will return invalid results. So yes, the info is dirty.

>  If the whole dominator information is recalculated when only
> Instructions are manipulated, that's rather wasteful.

This is a question of how to update and maintain dom info. properly.  
The pass that is modifying instructions should update "number"  
appropriately in your scheme. Many loop passes goes through a length  
to maintain dominator info.

> I'll allow that it
> _may_ be invalidated in the current implementation

well, I just realized that dom info is claimed as CFG pass so it is  
possible that some pass is not invalidating dom info while modifying  
BB instructions. IMO, this is a bug which should be fixed.

-
Devang

> but there's no reason
> it _must_ be.  I want to protect myself against future performance
> enhancements.  :)
>




More information about the llvm-dev mailing list