This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: SSA alias representation


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.



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]