It is becoming increasingly evident in the embedded world that the tools gain more and more weight in system evaluation and success, even in the context of hardware parallelism. Moreover, alias analysis - from the multitude of compiler optimizing techniques - stays at the base of most vectorization and parallelization transformations. While interprocedural alias analysis is still being studied and in some cases rejected by developers for resource consumption or compile time considerations, other techniques can be used to enhance performance. This paper proposes a practical and simple way of alias-property (restrict keyword) propagation after variable scope change. The method helps compilers exploit data and instruction-level parallelism. Parallelizing and optimizing techniques - inline, loop restructuring - can take advantage of the original alias attributes. The localized treatment of the alias properties does not impose barriers for code mobility. First, the concept of property inline information (with the immediate application of restrict inline) is introduced. Then, special-purpose data structures are defined. They help to simplify and enhance data dependence analysis with the help of related usage rules and propagation algorithms. In the end an extension is defined for additional cases of scope-changes. The work related to this paper has been implemented in a production compiler for the StarCore® SC3850 processor. A survey on common DSP applications has been made considering the usage of inline alias attributes versus simple interprocedural alias analysis.
[1]
Barbara G. Ryder,et al.
Relevant context inference
,
1999,
POPL '99.
[2]
Monica S. Lam,et al.
Efficient context-sensitive pointer analysis for C programs
,
1995,
PLDI '95.
[3]
Laurie J. Hendren,et al.
Context-sensitive interprocedural points-to analysis in the presence of function pointers
,
1994,
PLDI '94.
[4]
Erik Ruf,et al.
Context-insensitive alias analysis reconsidered
,
1995,
PLDI '95.
[5]
R. K. Shyamasundar,et al.
Introduction to algorithms
,
1996
.
[6]
Michael Hind,et al.
Assessing the Effects of Flow-Sensitivity on Pointer Alias Analyses
,
1998,
SAS.
[7]
Jakob Rehof,et al.
Estimating the Impact of Scalable Pointer Analysis on Optimization
,
2001,
SAS.
[8]
Wen-mei W. Hwu,et al.
Modular interprocedural pointer analysis using access paths: design, implementation, and evaluation
,
2000,
PLDI '00.
[9]
Manuvir Das,et al.
Unification-based pointer analysis with directional assignments
,
2000,
PLDI '00.