|Eliminating SSA variables email@example.com (Richard M.) (2005-07-28)|
|Re: Eliminating SSA variables firstname.lastname@example.org (Jeremy Singer) (2005-07-31)|
|Re: Eliminating SSA variables email@example.com (dz) (2005-07-31)|
|Re: Eliminating SSA variables firstname.lastname@example.org (Ali Al-Shabibi) (2005-07-31)|
|From:||Jeremy Singer <email@example.com>|
|Date:||31 Jul 2005 00:39:48 -0400|
|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" -
He advocates performing register allocation directly from SSA, rather
than undoing the SSA renaming.
Return to the
Search the comp.compilers archives again.