[PATCH] Add control dependence computation that computes control dependence equivalence classes.

Adam Nemet anemet at apple.com
Mon Mar 30 14:53:02 PDT 2015


In http://reviews.llvm.org/D8568#149015, @dberlin wrote:

> Actually, I thought of a case that won't work with that formulation:
>
> Given
>  int a, b;
>  int main(void)
>  {
>
>   do {
>       do {
>          b = a +1;
>      }
>           while (b);
>   } while (a);
>   return 0;
>
> }
>
> b = a+ 1 is control dependent on both the while test edges.
>  Both both loops are in the same CDEQ set (for the same reason. In fact,
>  simplifycfg will just make one single huge loop out of this.  )
>
> So when you have things that are control dependent on multiple nodes in
>  nested loops, you won't be able to determine both of the edges it's
>  dependent on, since the equivalence class is essentially the set that is
>  result of an equality query.  So you can't recover CD directly from it.
>  You can recover info about CONDS from it, you just don' t know what the
>  answer is.
>
> That is, CDEQ(w) is exactly the set of of things {for all blocks v in CFG |
>  CONDS(v) == CONDS(w)}
>
> So you know that things in the same set must have the same CONDS, you just
>  don't know what that CONDS is.
>
> However, you do know the answer to what CONDS is limited to the edges
>  between the CDEQ blocks, and the boundary edges of the CDEQ blocks (IE the
>  edges to a different equivalence class).
>
> I would bet you could compute this in linear time from CDEQ.
>  From CONDS, you can get CD.
>
> Though I admit, i'm curious what you would want the CD sets for.


It would be for Loop Distribution where a partition is made up of the transitive closure of the dependent (data and control) instructions of the original seeding instructions.

Thanks,
Adam

> Most things i've seen really want control-region info (so they can treat

>  all things equivalent as one large basic block) or things like SESE regions

>  (which can be computed in linear time from these sets) or the program

>  structure tree or whatever.

>  These are all computable directly from these sets.





http://reviews.llvm.org/D8568

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/






More information about the llvm-commits mailing list