This is the mail archive of the 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: [sa]: Revert partial def stuff, use fake variables instead

On Thu, 2004-12-23 at 10:35 +0100, Zdenek Dvorak wrote:
> Hello,
> > > 2) To make things even more funny, we require that the ssa names with
> > >    the same pt_vars also have the same tag.
> > 
> > This is also true, because it's necessary if we group.
> > This is because the grouping algorithms may cause us to use the NMT
> > name, instead of it's aliases, as the alias.
> > 
> > If you have different names for the same set of pointed-to pointers, you
> > either 
> > 1. are screwed
> > 2. have to make sure to mark anything with the same set of pointed-to
> > pointers as being in the same sets anyway, which causes the same
> > quadratic behavior.
> see group_aliases.  We already have to look for pointers whose may-alias
> set intersects with the group that is merged together.

group_aliases doesn't run all the time, it only runs if number_of_vops >

So you can't rely on it to do this for you.

(and running it all the time is not a good idea either)

> > > So far I did not notice any reason for having NMT's at all -- it seems
> > > to me that everything would work just fine (and much more efficiently)
> > > if tree-ssa-operands just looked at pt_vars instead.  What do I miss?
> > 
> > That if you have too many pt_vars, the number of virtual variables
> > explodes if you do that.  In order to avoid having an infinite number of
> > virtual variables that we are renaming to represent aliasing, we group
> > if the number of virtual ops is going to be more than 500 in a single
> > functions.
> > 
> > If you don't group, you could certainly just use pt_vars (there may be
> > some caveats to this right now that i'm sure diego know sabout).
> As far as I can tell, the following approach should work as well,
> without need for NMT's:
> 1) Find a pointer with largest pt_vars set S.
> 2) Create a new tag T to represent the set of variables S.

You just said you don't want NMT's, so what is this "create new tag"
NMT's are really just placeholders for pt_vars and the pt_* flags.
So what exactly are you proposing changing?
Just having NMT's have pt_vars and using that, instead of having them
have a separate array?

> 3) For each pointer P, if P->pt_vars has nonempty intersection with S,
>    set P->pt_vars = P->pt_vars \setminus S \cup {T}.
> Zdenek

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