This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: [tree-ssa] Translation out of SSA
- From: Andrew MacLeod <amacleod at redhat dot com>
- To: Jeff Law <law at redhat dot com>
- Cc: jslists at ntlworld dot com, gcc at gcc dot gnu dot org
- Date: 24 Apr 2003 22:56:25 -0400
- Subject: Re: [tree-ssa] Translation out of SSA
- References: <200304250202.h3P22aaa029364@speedy.slc.redhat.com>
On Thu, 2003-04-24 at 22:02, law at redhat dot com wrote:
> In message <20030424232723 dot GA4937 at petteflet dot ntlworld dot com>, Jan Vroonhof writes:
>
> > 2. How the partitioning in your algorithm avoids inserting copies on
> >abnormal critical edges (at least to me it is non-obvious that the
> >algorithm guarantees the SSA temps of the same variable on both sides
> >of an abnormal edge end up in the same partition).
> >or am I just showing my lack of knowledge and this is all trivial?
> I wouldn't be terribly surprised if this isn't handled yet. It's
> not particularly difficult to handle.
>
>
Well, it doesn't right now, but it is trivial. You simply coalesce all
the things on abnormal edges first so that they aren't an issue later...
I just havent gotten to it yet. We haven't actually exercised anything
really interesting yet :-). Everything *ought* to always map to the root
variable still. Soon!
> >> Then we'll remove the abort() permanently, and start allowing overlapping
> >> live ranges, but not before I debug them :-). I know there is a bug in edge
> >> insertion I have to get to, and a couple of other things.
> >
> >Are you talking about the following[2]
Pretty much. I changed the insert_on_edge code from acting-on-demand to
queuing-it-up and doing it all at once. No one was using the code, and
this pass was going to be the initial client. I noticed the failure, but
there were other more serious matters failing earlier which required
attention first. I should shortly be back to using that code, and then
I'll get the bug out :-) I doubt its very serious.
> Unknown. The most interesting thing I've run into in the insertion code
> is it mucked things up because we had different blocks recorded for
> the current statement and its container. That caused all kinds of
> problems.
really? That would be bad. Who made the stmt and its container have
different blocks? Thats not cool.
>
>
> >[1] The code even optimistically assumes it can map all the
> >partitions to their root variable and maps it to a different temporary
> >if it absolutely has to (quite different from the union-find proposed
> >by Morgan).
> Nope, you just have to go elsewhere in Morgan to get his real partitioner :-)
To be honest, I didn't even look at Morgans partitioner... I just wrote
one based on what I knew about coalescing... :-) And yes, thats what it
does. Only maps it to a different temporary if it absolutely has to. The
plan will be to choose which ones get a different temporary carefully...
right now its pure first come-first serve. That'll be part and parcel
with the abnormal edge handling.
Andrew