Optimization of Expressions in Fortran A method of optimizing the computation of arithmetic and indexing expressions of a Fortran program is presented. The method is based on a linear analysis of the definition points of the variables and the branching and DO loop structure of the program. The objectives of the processing are (1) to eliminate redundant calculations when references are made to common subexpression values, (2) to remove invariant calculations from DO loops, (3) to efficiently compute subscripts containing DO iteration variables, and (4) to provide efficient index register usage. The method presented requires at least a three-pass compiler, the second of which is scanned backward. It has been used in the development of several FORTRAN compilers that have proved to produce excellent object code without significantly reducing the compilation speed. CACM December, 1969 Busam, V. A. England, D. E. FORTRAN, optimization, expressions, compilers, compilation, subscripts, register allocation, DO loops, common subexpressions, invariant calculations 4.12 CA691205 JB February 15, 1978 4:16 PM 1625 4 1807 1781 4 1807 1807 4 1807 1807 4 1807 1807 4 1807 1807 4 1807 1934 4 1807 1945 4 1807 1947 4 1807 1947 4 1807 2034 4 1807 2175 4 1807 2290 4 1807 2579 4 1807 2923 4 1807 2945 4 1807 1223 5 1807 1248 5 1807 1551 5 1807 1807 5 1807 1807 5 1807 1807 5 1807 1947 5 1807 2579 5 1807 2923 5 1807 1535 6 1807 1807 6 1807 1807 6 1807 1947 6 1807 1947 6 1807