|
ABSTRACT
In a compiling system that attempts to improve code for a whole program by optimizing across procedures, the compiler can generate better code for a specific procedure if it knows which variables will have constant values, and what those values will be, when the procedure is invoked. This paper presents a general algorithm for determining for each procedure in a given program the set of inputs that will have known constant values at run time. The precision of the answers provided by this method are dependent on the precision of the local analysis of individual procedures in the program. Since the algorithm is intended for use in a sophisticated software development environment in which local analysis would be provided by the source editor, the quality of the answers will depend on the amount of work the editor performs. Several reasonable strategies for local analysis with different levels of complexity and precision are suggested and the results of a prototype implementation in a vectorizing Fortran compiler are presented.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
|
| |
2
|
F. Allen, J. Carter, J. Fabri, J. Ferrante, W. Harrison, P. Loewner, and L. Trevillyan. The experimental compiling system. IBM Journal of Research and Development, 24(6):695--715, Nov. 1980.
|
| |
3
|
J. Allen and K. Kennedy. PFC: a program to convert FORTRAN to parallel form. In K. Hwang, editor, Supercomputers: Design and Applications. IEEE Computer Society Press, 1984.
|
 |
4
|
|
| |
5
|
|
| |
6
|
W. Blume and R. Eigenmann. An overview of symbolic analysis techniques needed for the effective parallelization of the Perfect benchmarks. In Proceedings of the 23rd International Conference on Parallel Processing, Volume 2: Software, pages 233--238. CRC Press, Aug. 1994.
|
 |
7
|
|
 |
8
|
|
 |
9
|
|
| |
10
|
|
 |
11
|
|
 |
12
|
|
| |
13
|
J. Dongarra. LINPACK working note #3: FORTRAN BLAS timing. Technical Report ANL-80-24, Argonne National Laboratory, Feb. 1980.
|
 |
14
|
|
 |
15
|
|
| |
16
|
J. B. Kam and J. D. Ullman. Monotone data flow analysis frameworks. Acta Inf., 7:305--317, 1977.
|
 |
17
|
|
| |
18
|
R. Metzger and P. Smith. The CONVEX application compiler. Fortran Journal, 3(1):8--10, 1991.
|
| |
19
|
|
 |
20
|
|
 |
21
|
Thomas Reps , Susan Horwitz , Mooly Sagiv, Precise interprocedural dataflow analysis via graph reachability, Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages, p.49-61, January 23-25, 1995, San Francisco, California, United States
[doi> 10.1145/199448.199462]
|
| |
22
|
|
 |
23
|
|
| |
24
|
|
| |
25
|
B. Wegbreit. Property extraction in well-founded sets. IEEE Transactions on Software Engineering, 1(3), Sept. 1975.
|
 |
26
|
|
 |
27
|
|
| |
28
|
|
| |
29
|
{Alle 74} F. E. Allen. Interprocedural data flow analysis. Proceedings IFIP Congress 74, North-Holland Publishing Co.: Amsterdam. 1974.
|
| |
30
|
{AlKe 84} J. R. Allen and K. Kennedy. PFC: a program to convert Fortran to parallel form. Supercomputers: Design and Applications (K. Hwang, ed.). IEEE Computer Society Press, 1984.
|
 |
31
|
|
| |
32
|
|
 |
33
|
|
 |
34
|
|
 |
35
|
Keith D. Cooper , Ken Kennedy , Linda Torczon, The impact of interprocedural analysis and optimization on the design of a software development environment, Proceedings of the ACM SIGPLAN 85 symposium on Language issues in programming environments, p.107-116, June 25-28, 1985, Seattle, Washington, United States
|
| |
36
|
{CoKT 86} K. D. Cooper, K. Kennedy and L. Torczon. Optimization of compiled code in the IRn programming environment. Proceedings of the Nineteenth Annual Hawaii International Conference on Systems Sciences. January, 1986.
|
| |
37
|
{Dong 80} J. Dongarra. LINPACK working note #3: FORTRAN BLAS timing. Technical Report ANL-80-24, Argonne National Laboratory, February 1980.
|
| |
38
|
{DBMS 79} J. J. Dongarra, J. R. Bunch, C. B. Moler, and G. W. Stewart. LINPACK Users' Guide. SIAM, Philadelphia. 1979.
|
| |
39
|
{HoKe 85} R. T. Hood and K. Kennedy. A programming environment for Fortran. Proceedings of the Eighteenth Annual Hawaii International Conference on Systems Sciences, 1985.
|
| |
40
|
{KaUl 77} J. Kam and J. Ullman. Monotone data flow analysis frameworks. Acta Informatica, 7. 1977.
|
| |
41
|
{Kenn 78} K. Kennedy. Use-definition chains with applications. J. Computer Languages, 3(3). 1978.
|
| |
42
|
{Kenn 81} K. Kennedy. A survey of data flow analysis techniques. Program Flow Analysis: Theory and Applications (S.S. Muchnick and N.D. Jones, eds.). Prentice-Hall. 1981. pp. 5--54.
|
 |
43
|
|
 |
44
|
|
| |
45
|
{ReLe 82} J. H. Reif and H. R. Lewis. Symbolic evaluation and the global value graph. TR 37-82, Aiken Computation Laboratory, Harvard University. 1982.
|
 |
46
|
|
| |
47
|
|
 |
48
|
|
|