|
ABSTRACT
Although optimizing compilers have been quite successful in producing excellent code, two factors that limit their usefulness are the accompanying long compilation times and the lack of good symbolic debuggers for optimized code. One approach to attaining faster recompilations is to reduce the redundant analysis that is performed for optimization in response to edits, and in particulars, small maintenance changes, without affecting the quality of the generated code. Although modular programming with separate compilation aids in eliminating unnecessary recompilation and reoptimization, recent studies have discovered that more efficient code can be generated by collapsing a modular program through procedure inlining. To avoid having to reoptimize the resultant large procedures, this paper presents techniques for incrementally incorporating changes into globally optimized code. An algorithm is given for determining which optimizations are no longer safe after a program change, and for discovering which new optimizations can be performed in order to maintain a high level of optimization. An intermediate representation is incrementally updated to reflect the current optimizations in the program. Analysis is performed in response to changes rather than in preparation for possible changes, so analysis is not wasted if an edit has no far-reaching effects. The techniques developed in this paper have also been exploited to improve on the current techniques for symbolic debugging of optimized code.
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
|
Alfred V. Aho , Ravi Sethi , Jeffrey D. Ullman, Compilers: principles, techniques, and tools, Addison-Wesley Longman Publishing Co., Inc., Boston, MA, 1986
|
| |
2
|
|
 |
3
|
|
 |
4
|
|
 |
5
|
Keith D. Cooper , Ken Kennedy , Linda Lorczon, Interprocedural optimization: eliminating unnecessary recompilation, Proceedings of the 1986 SIGPLAN symposium on Compiler construction, p.58-67, June 25-27, 1986, Palo Alto, California, United States
|
| |
6
|
|
| |
7
|
|
 |
8
|
|
 |
9
|
|
| |
10
|
HusoN, C. A. An in-line subroutine expander for Parafrase. M.S. Thesis, Tech. Rep. UIUCDCS-R-82-1118, Univ. of Illinois at Urbana-Champaign, Dec. 1982.
|
 |
11
|
|
| |
12
|
KEABLES, J., ROBERSON, K., AND VON MAYRHAUSER, A. Data fiow analysis and ifs application to software maintenance. In Proceedings of Conference on Software Mointenance (Phoenix, Ariz., Oct. 1988) pp. 335-347.
|
 |
13
|
|
 |
14
|
|
| |
15
|
|
| |
16
|
|
| |
17
|
|
 |
18
|
|
| |
19
|
|
 |
20
|
|
 |
21
|
|
 |
22
|
|
 |
23
|
|
 |
24
|
|
 |
25
|
|
CITED BY 8
|
|
Yanhong A. Liu , Scott D. Stoller , Tim Teitelbaum, Discovering auxiliary information for incremental computation, Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages, p.157-170, January 21-24, 1996, St. Petersburg Beach, Florida, United States
|
|
|
|
|
|
|
|
|
|
|
|
C.-R. Dow , S.-K. Chang , M. L. Soffa, A visualization system for parallelizing programs, Proceedings of the 1992 ACM/IEEE conference on Supercomputing, p.194-203, November 16-20, 1992, Minneapolis, Minnesota, United States
|
|
|
|
|
|
|
|
|
|
REVIEW
"Pani N. Chakrapani : Reviewer"
Users hesitate to use optimizing compilers because optimization
analysis and code transformations result in increased compile time and
because symbolically debugging optimized code is not
straightforward; maintenance changes also r
more...
|