Related articles |
---|
Overlapping live ranges in Open64's SSA form dnovillo@redhat.com (Diego Novillo) (2002-12-19) |
Re: Overlapping live ranges in Open64's SSA form lsjoberg@aland.net (2002-12-22) |
Re: Overlapping live ranges in Open64's SSA form dnovillo@redhat.com (Diego Novillo) (2002-12-24) |
From: | Diego Novillo <dnovillo@redhat.com> |
Newsgroups: | comp.compilers |
Date: | 19 Dec 2002 12:46:33 -0500 |
Organization: | Red Hat Canada |
Keywords: | analysis, optimize, question |
Posted-Date: | 19 Dec 2002 12:46:32 EST |
Content-Disposition: | inline |
Open64's SSA form does not allow overlapping live ranges for
different versions of the same variable. This has the nice
property that going out of SSA form is only a matter of dropping
all version numbers and removing PHI nodes. There is none of the
copy generation and coalescing that goes on in the traditional
un-SSA pass.
However, this also means that transformations that move code
around need to be careful not to overlap live ranges. I'm
interested in learning about experiences people have had with
this and other SSA implementations that allow overlapping live
ranges.
I also think that if one wants to apply SSA numbering to anything
other than scalars (e.g. structures or arrays), then allowing
overlapping live ranges might trigger the generation of block
moves when copies cannot be coalesced.
Furthermore, what would happen to the '&' operator in C? Say we
take the address of variable 'a' that has two live versions.
Which one do we use?
Pointers to literature or experiences in production compilers
greatly appreciated. I'm particularly interested in comparisons
in code quality between a form that allows overlapping live
ranges and one that doesn't.
Diego.
Return to the
comp.compilers page.
Search the
comp.compilers archives again.