SSA Elimination after Register Allocation
SSA Elimination after Register Allocation
复制标题
寄存器分配后SSA消除
DOI:
--
复制
发表时间:
2009
期刊:
影响因子:
--
通讯作者:
J. Palsberg
中科院分区:
文献类型:
--
作者:
Fernando Magno Quintão Pereira;J. Palsberg
Compilers such as gcc use static-single-assignment (SSA) form as an intermediate representation and usually perform SSA elimination before register allocation. But the order could as well be the opposite: the recent approach of SSA-based register allocation performs SSA elimination after register allocation. SSA elimination before register allocation is straightforward and standard, while previously described approaches to SSA elimination after register allocation have shortcomings; in particular, they have problems with implementing copies between memory locations. We present spill-free SSA elimination , a simple and efficient algorithm for SSA elimination after register allocation that avoids increasing the number of spilled variables. We also present three optimizations of the core algorithm. Our experiments show that spill-free SSA elimination takes less than five percent of the total compilation time of a JIT compiler. Our optimizations reduce the number of memory accesses by more than 9% and improve the program execution time by more than 1.8%.