On 2/21/08 1:13 PM, Fran Baena wrote:
2008/2/21, Diego Novillo <[EMAIL PROTECTED]>:
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.

Reply via email to