Overlapping live ranges in Open64's SSA form

Diego Novillo <dnovillo@redhat.com>
19 Dec 2002 12:46:33 -0500

          From comp.compilers

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)
| List of all articles for this month |

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.


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.