ABSTRACT
We are constructing a compiler for a high level systems and applications programming language. Because the compiler is required to generate efficient object code, a global optimization phase and register allocation phase are an integral part of the design. It was determined that the familiar optimizations of code motion, redundant expression elimination, and dead code removal would be sufficient.
The optimizer design was to be based on the most recent applicable theoretical results, yet simple and straightforward to implement. Traditional approaches were considered inadequate because they assume a primitive intermediate code representation (quadruples), elaborate flow graph constructions, and numerous special cases. High level data flow analysis as proposed by Rosen [1,2] provided the framework we sought. Using his approach, the parse tree of the program, with its high level control structures intact, becomes a suitable intermediate representation. Complex statement structures are analyzed quickly in two tree traversals to determine the solutions to data flow problems.
- 1.Rosen, Barry K., "High-Level Data Flow Analysis," CACM 20, 10/77, 712-24. Google ScholarDigital Library
- 2.Rosen, Barry K., "monoids for Rapid Data Flow Analysis," IBM Res. Rep. RC 7032, 3/78. IBM T. J. Watson Res. Cr., Yorktown Heights, New York.Google Scholar
- 3.Aho, Alfred V., and Ullman, J. D., Principles of Compiler Design, Addison-Wesley, 1977. Google ScholarDigital Library
- 4.Morel, E. and Renvoise, C., "Global Optimization by Suppression of Partial Redundancies," CACM 22 2/79 96-103. Google ScholarDigital Library
- 5.Schwartz, J. T., "On Programming: an Interim Report on the SETL Project," Second Edition, Courant Institute of Mathematical Sciences, New York University, New York, New York, 1975.Google Scholar
- 6.Schwartz, J. T., and Sharir, M., "Design of Optimizations of the Bit-Vectoring Class," Courant Institute of Mathematical Sciences, New York University, New York, New York, Technical Report to appear.Google Scholar
Index Terms
- The design of a global optimizer
Recommendations
The design of a global optimizer
Proceedings of the 1979 SIGPLAN symposium on Compiler constructionWe are constructing a compiler for a high level systems and applications programming language. Because the compiler is required to generate efficient object code, a global optimization phase and register allocation phase are an integral part of the ...
An effective bacterial foraging optimizer for global optimization
An effective bacterial foraging optimizer for global optimization is presented.The optimization utilizes combination of gravitational search and swarm diversity strategies.The algorithm is used to solve various types of benchmark functions and identify ...
Comments