This Article 
 Bibliographic References 
 Add to: 
On the Efficient Engineering of Ambitious Program Analysis
February 1994 (vol. 20 no. 2)
pp. 105-114

Recent advances in languages, software design methodologies, and architecture have prompted the development of improved compile-time methods for analyzing the effects of procedure calls, pointer references, and array accesses. Such sophistication, however, generally implies that compilers and programming environments will experience a corresponding increase in the volume of analysis information, which may be difficult to use efficiently. In this paper, we consider the practical accommodation of such information. Our results show how to engineer a compiler such that its optimization phase takes time proportional to the benefit, rather than the size, of such information.

[1] A. V. Aho, R. Sethi, and J. D. Ullman,Compilers: Principles, Techniques, and Tools. Reading, MA: Addison-Wesley, 1986.
[2] F. Allen, M. Burke, P. Charles, R. Cytron, and J. Ferrante, "An overview of the PTRAN analysis system for multiprocessing,"J. Parallel Distributed Comput., vol. 5, no. 5, pp. 617-640, Oct. 1988.
[3] R. Allen and K. Kennedy, "Automatic translation of FORTRAN to vector form,"ACM Trans. Programming Languages Syst., vol. 9, no. 4, pp. 491-524, 1987.
[4] V. Balasundaram, K. Kennedy, U. Kremer, K. McKinley, and J. Subhlok, "The parascope editor: An interactive parallel programming tool,"Proc. Supercomputing '89, Nov. 1989.
[5] J. P. Banning, "An efficient way to find the side effects of procedure calls and the aliases of variables," inProc. 6th POPL Conf., ACM, pp. 724-736, 1979.
[6] M. Berry, D. Chen, P. Koss, D. Kuck, S. Lo, Y. Pang, R. Roloff, A. Sameh, E. Clementi, S. Chin, D. Schneider, G. Fox, P. Messina, D. Walker, C. Hsiung, J. Schwarzmeier, K. Lue, S. Orszag, F. Seidl, O. Johnson, G. Swanson, R. Goodrum, and J. Martin, "The perfect club benchmarks: Effective performance evaluation of supercomputers the performance evaluation club (perfect)," Tech. Rep., Center for Supercomputing Res. and Dev., Univ. of Ill., 1988.
[7] F. Bodin, "Preliminary report--Data structure analysis in C programs," Indiana Univ., Bloomington, IN, 1990.
[8] M. Burke, "An interval-based approach to exhaustive and incremental interprocedural data-flow analysis,"ACM Trans. Programming Languages Syst., vol. 12, pp. 341-395, July 1990.
[9] J.-D. Choi, M. Burke, and P. Carini, "Efficient flow-sensitive interprocedural computation of pointer-induced aliases and side effects,"Conf. Record 20th Ann. ACM Symp. Principles of Programming Languages, 1993.
[10] R. Cytron, J. Ferrante, B. Rosen, M. Wegman, and K. Zadeck, "An efficient method of computing static single assignment form," inConf. Rec. Sixteenth ACM Symp. Principles Programming Languages, Austin, TX, June 1989.
[11] R. Cytron, J. Ferrante, B. K. Rosen, M. N. Wegman, and F. K. Zadeck, "Efficiently computing static single assignment form and the control dependence graph,"ACM Trans. Programming Languages and Syst., Oct. 1991.
[12] R. Cytron, A. Lowry, and K. Zadeck, "Code motion of control structures in high-level languages,"Conf. Rec. ACM Symp. on Principles of Compiler Construction, 1986.
[13] W. Landi and B. G. Ryder, "A safe approximate algorithm for interprocedural pointer aliasing,"Proc. ACM SIGPLAN '92 Conf. Programming Language Design and Implementation, 1992, pp. 235-248.
[14] J. McGraw, S. Skedzielewski, S. Allan, R. Oldehoeft, J. Glauert, C. Kirkham, B. Noyce, and R. Thomas, "Sisal: Streams and iteration in a single assignment language reference manual version 1.2," Tech. Rep. M-146, Rev. 1, Lawrence Livermore National Laboratory, 1985.
[15] W. Pugh and D. Wonnacott, "Eliminating false data dependences using the omega test,"Proc. SIGPLAN 1992 PLDI Conf., pp. 140-151, 1992.
[16] B. K. Rosen, M. N. Wegman, and F. K. Zadeck, "Global value numbers and redundant computations," inConf. Rec. Fifteenth ACM Symp. Principles Programming Languages, San Diego, CA, Jan. 1988, pp. 12-27.
[17] V. Sarkar, "The PTRAN parallel programming system,"Parallel Functional Programming Languages and Compilers, pp. 309-391, 1991.
[18] T.H. Cormen, C.E. Leiserson, and R.L. Rivest,Introduction to Algorithms, McGraw-Hill, Cambridge, Mass., 1990.
[19] M. Wegman and F. K. Zadeck, "Constant propagation with conditional branches,"ACM Trans. Programming Languages Syst., vol. 13, pp. 181-210, Apr. 1991.
[20] M. Wegman and K. Zadeck, "Constant Propagation with Conditional Branches,"Conf. Record ACM Symp. Principles of Programming Languages, ACM Press, New York, 1985, pp. 291-299.

Index Terms:
program diagnostics; program compilers; software engineering; optimisation; efficient engineering; program analysis; compile-time methods; procedure calls; pointer references; array accesses; compilers; programming environments; optimization phase; information benefit; analysis information volume; data-flow analysis; data-flow chains; reaching definitions; static single assignment; compact representation; demand-driven computation
Jong-Deok Choi, R. Cytron, J. Ferrante, "On the Efficient Engineering of Ambitious Program Analysis," IEEE Transactions on Software Engineering, vol. 20, no. 2, pp. 105-114, Feb. 1994, doi:10.1109/32.265631
Usage of this product signifies your acceptance of the Terms of Use.