Abstract
Constant propagation and provide significant improvements in program speed, both by directly enabling optimizations such as constant folding and algebraic simplification and by providing information that in- releases the effectiveness of other compile-time analyses. This technique has generally not been applied to arrays, as it relies on information about the ow of values, but standard array analysis produces only memory aliasing information. The development of techniques for analyzing the ow of values in array variables raises the possibility of applying constant propagation (as well as other traditional value-based scalar analyses and optimizations) to values in arrays. In the use of constant propagation, an analysis may benet from an extension of our definition of what constitutes a constant. In this work, we propose a definition of the constant array that subsumes those used for scalar and in previous work on constant propagation for arrays. We then show that this definition lets us perform analysis of arrays that fall outside the domain of previous work on constant propagation. We also discuss generalizations of dead code elimination and forward substitution.