[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