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


>
> When there are no symbols in the pointer's points-to set.
>

I am beginning to realize. But there is something it remains:

1) Once the ssa rename has been done, the alias analysis begins
(points-to sets). Each version of a base pointer has associated its
own points-to set? Like

if ()
  t_1 = & a_1;        t_1 points-to { a_1 }
else
  if ()
    t2_ = & b_1;      t_2 points-to { b_1 }
  else
    t_3 = & c_1;      t_3 points-to { c_1 }

#  t_4 = PHI <t_1, t_2, t_3>
p_1 = t_4;             p_1 and t_4 points-to { a_1, b_1, c_1 }

2) If a virtual operator is inserted for each symbol found in a
points-to set and since the virtual operands are inserted after the
ssa renaming, how virtual operands are versioned to keep a correct
version state between real and virtual operators?  For instance, given
the next code

if ()
  t_1 = & a_1;        t_1 points-to { a_1 }
else
  if ()
    t2_ = & b_1;      t_2 points-to { b_1 }
  else
    t_3 = & c_1;      t_3 points-to { c_1 }


p_1 = t_4;             p_1 and t_4 points-to { a_1, b_1, c_1 }

*p_2 = 5;              *p_2 -> NMT that is associated to points-to {
a_1, b_1, c_1 }

the virtual operators will be placed and versioned like this:

if ()
  t_1 = & a_1;        t_1 points-to { a_1 }
else
  if ()
    t2_ = & b_1;      t_2 points-to { b_1 }
  else
    t_3 = & c_1;      t_3 points-to { c_1 }

#  t_4 = PHI <t_1, t_2, t_3>
# VUSE <a_1>
# VUSE <b_1>
# VUSE <c_1>
p_1 = t_4;             p_1 and t_4 points-to { a_1, b_1, c_1 }


# a_2 = VDEF <a_1>
# b_2 = VDEF <b_1>
# c_2 = VDEF <c_1>
*p_2 = 5;              *p_2 -> NMT that is associated to points-to {
a_1, b_1, c_1 }


Thank you very much for your help.

Fran


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