Related articles |
---|
Eliminating SSA variables richard@imagecraft.com (Richard M.) (2005-07-28) |
Re: Eliminating SSA variables jsinger@cs.man.ac.uk (Jeremy Singer) (2005-07-31) |
Re: Eliminating SSA variables drizzle76@gmail.com (dz) (2005-07-31) |
Re: Eliminating SSA variables ali@olympe.ch (Ali Al-Shabibi) (2005-07-31) |
From: | Jeremy Singer <jsinger@cs.man.ac.uk> |
Newsgroups: | comp.compilers |
Date: | 31 Jul 2005 00:39:48 -0400 |
Organization: | Compilers Central |
References: | 05-07-114 |
Keywords: | analysis, SSA |
Posted-Date: | 31 Jul 2005 00:39:48 EDT |
> The problem now is that there are 2 variables inside the loop, i1 and i2
> with overlapping lifetimes, thus using more registers and causing extra
> register moves at code generation time. Is there something we can do to
> address this problem?
A register coalescing phase should combine i1 and i2 into the same
register. In this case, extra register moves are not necessary. SSA
\phi-functions can provide hints to the coalescing algorithm. The recent
paper "Optimizing Translation out of SSA Using Renaming Constraints" by
Rastello et al, CGO 2004, gives more details.
It may also be worth checking out Sebastian Hack's work on "Interference
Graphs of Programs in SSA-form" -
http://www.info.uni-karlsruhe.de/publications.php/id=382
He advocates performing register allocation directly from SSA, rather
than undoing the SSA renaming.
Cheers,
Jeremy
Return to the
comp.compilers page.
Search the
comp.compilers archives again.