Scalar replacement in the presence of conditional control flow
作者:
Steve Carr,
Ken Kennedy,
期刊:
Software: Practice and Experience
(WILEY Available online 1994)
卷期:
Volume 24,
issue 1
页码: 51-77
ISSN:0038-0644
年代: 1994
DOI:10.1002/spe.4380240104
出版商: John Wiley&Sons, Ltd.
关键词: Compilers;Optimization;Register allocation
数据来源: WILEY
摘要:
AbstractMost conventional compilers fail to allocate array elements to registers because standard data‐flow analysis treats arrays like scalars, making it impossible to analyze the definitions and uses of individual array elements. This deficiency is particularly troublesome for floating‐point registers, which are most often used as temporary repositories for subscripted variables.This paper presents a source‐to‐source transformation, calledscalar replacement, that finds opportunities for reuse of subscripted variables and replaces the references involved by references to temporary scalar variables. The scalar replaced variables are more likely to be assigned to registers by the coloring‐based register allocators found in most compilers than are their unreplaced counterparts. The algorithm presented here extends previous techniques for scalar replacement by allowing the presence of forward conditional control flow within loop bodies through the mapping of partial redundancy elimination to scalar replacement. Finally, experimental results show that scalar replacement is extremely effective. On kernels, integer‐factor improvements over code generated by a good optimizing compiler of conventional design a
点击下载:
PDF
(1488KB)
返 回