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: [tree-ssa] Translation out of SSA


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



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