Re: Control Dependencies for Loops

paco@ariel.cs.rice.edu (Paul Havlak)
Thu, 22 Apr 1993 12:15:47 GMT

          From comp.compilers

Related articles
Control Dependencies for Loops hagerman@ece.cmu.edu (1993-04-20)
Re: Control Dependencies for Loops paco@ariel.cs.rice.edu (1993-04-22)
Re: Control Dependencies for Loops girkar@kpc.com (1993-04-22)
| List of all articles for this month |
Newsgroups: comp.compilers
From: paco@ariel.cs.rice.edu (Paul Havlak)
Keywords: analysis
Organization: Rice University
References: 93-04-074
Date: Thu, 22 Apr 1993 12:15:47 GMT

hagerman@ece.cmu.edu (John Hagerman) writes:
>This definition of control dependence is fairly typical, right?
>
> DEP(x,y) iff !POST-DOM(y,x)
> and there exists a path P=<x,...,y> such that
> for all z in P (except x,y), POST-DOM(y,z)


        Yes, this is pretty standard, although for this version to be precise,
POST-DOM must be strict; i.e., POST-DOM(x,x) is false for all x.


> [START]
> |
> v
> [E]<-+
> | |
> v |
> +-<?> |
> | | |
> | v |
> | [S] |
> | | |
> | +---+
> v
> [END]
>
>The above definition specifies that DEP(<?>,[E]) and DEP(<?>,[S]). But it
>seems like I should only be concerned with the dependencies within a
>single iteration, so why have DEP(<?>,[E]) at all? Is it only an artifact
>of the definition? ...


        It's not an artifact, it's the whole point. Control dependences,
defined as above, are a powerful abstraction because they can be handled
very similarly to data dependences. Like data dependences, control
dependences are either loop-independent or carried by a particular loop.
In your example, DEP(<?>,[E]) is loop-carried and DEP(<?>,[S]) is
loop-independent.


> ... If I change the definition so that backedges are not
>permitted in P, do I shoot myself?


        Loop-carried control dependences, together with other control and data
dependences, can create dependence cycles (recurrences). So they are
essential for many purposes. Recurrences must be broken by
transformations before a loop can be run in parallel.
        However, if you never perform a transformation that could violate a
loop-carried control dependence, you may "ignore" them because they are
implicitly respected.


Hope this helps,
Paul
--
Paul Havlak Dept. of Computer Science
Graduate Student Rice University, Houston TX 77251-1892
PFC/ParaScope projects (713) 527-8101 x2738 paco@cs.rice.edu
--


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.