SSA alias representation

Diego Novillo dnovillo@google.com
Thu Feb 21 19:29:00 GMT 2008


On 2/21/08 1:13 PM, Fran Baena wrote:
> 2008/2/21, Diego Novillo <dnovillo@google.com>:
>> On 2/19/08 2:27 PM, Fran Baena wrote:
>>  > Hi everybody,
>>  >
>>  > i am studing how gcc carries out Alias Representation and some questions appear.
>>  >
>>  > For instance, given this code portion:
>>  >
>>  >  if ( ... )
>>  >    p  = &a;
>>  >  else
>>  >    if ( ... )
>>  >      p = &b;
>>  >    else
>>  >      p = &c;
>>  >
>>  >  a = 5;
>>  >  b = 3;
>>  >  d = *p4;
>>  >
>>  > My questions are:
>>  >
>>  > - both p like *p need a Name Memory Tag structure? It is enough with only one?
>>
>>
>> Pointer dereferences do not receive NMTs, only the pointers.  So a name
>>  tag will be associated with the SSA name resulting from the PHI node
>>  created at the end of that if() tree.
> 
> And this name tag is versioned too, like this:
>  if ( ... )
>     p  = &a;   (NMTv1 associated to p)
>  else
>  if ( ... )
>     p = &b;    (NMTv2 associated to p)
>  else
>     p = &c;    (NMTv3 associated to p)
> 
No.  None of these SSA names are dereferenced so no name tag is created 
for them.  The only SSA name with a name tag will be the one produced by 
the PHI.

See the output of -fdump-tree-salias-vops-blocks.  That will show you 
the results of the first alias analysis run.

> To organize temporarily the passes. Firstly alias analysis is
> computed, it is followed by ssa form, and after that the memory ssa
> web, aren't they?

No.  First SSA then alias analysis then the memory SSA

> Where could i find all the passes applied and their order?

passes.c:init_optimization_passes.

> What is register SSA form? Is it the standard SSA form explained in
> "Efficiently computing static single assignment form and the control
> dependence graph (cytron91)"?

Yes.  It's the traditional rewriting form.  The memory SSA web is the 
factored use-def chains by Wolfe.


See the tutorials in http://gcc.gnu.org/wiki/GettingStarted, all this is 
described there.


Diego.



More information about the Gcc mailing list