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.
- About versioning : every name can be versioned, cannot it?
Sorry, I don't understand the question.  SSA names have a version 
number, yes.  Is that what you're asking?
   - when are virtual operands inserted? Do they have to be versioned
at same time that real operands? For instance, # a6 = VDEF <a5>; a7 =
3;, this implies that alias computation is processed at same time that
SSA Renaming?
No, the memory SSA web is built after the first stage of alias analysis. 
 First, the program is put in register SSA form, a few passes later the 
memory SSA UD web is built on top.

   - Could the others names (TMT, NMT,  SFT, etc.) be versioned?
(every name that is able to be part of a virtual operand could be
versioned....)
Yes.  When a pointer does not have a specific set of symbols in its 
points-to set, its memory tag is used.

Diego.

Reply via email to