scispace - formally typeset
Journal ArticleDOI

Global optimization by suppression of partial redundancies

E. Morel, +1 more
- 01 Feb 1979 - 
- Vol. 22, Iss: 2, pp 96-103
Reads0
Chats0
TLDR
This paper proposes to do both the elimination of redundant computations and the moving of invariant computations out of loops at once and to move each expression directly to the entrance of the outermost loop in which it is invariant.
Abstract
The elimination of redundant computations and the moving of invariant computations out of loops are often done separately, with invariants moved outward loop by loop. We propose to do both at once and to move each expression directly to the entrance of the outermost loop in which it is invariant. This is done by solving a more general problem, i.e. the elimination of computations performed twice on a given execution path. Such computations are termed partially redundant. Moreover, the algorithm does not require any graphical information or restrictions on the shape of the program graph. Testing this algorithm has shown that its execution cost is nearly linear with the size of the program, and that it leads to a smaller optimizer that requires less execution time.

read more

Citations
More filters
Journal ArticleDOI

Compiler transformations for high-performance computing

TL;DR: This survey is a comprehensive overview of the important high-level program restructuring techniques for imperative languages, such as C and Fortran, and describes the purpose of each transformation, how to determine if it is legal, and an example of its application.
Journal ArticleDOI

Effective compiler support for predicated execution using the hyperblock

TL;DR: In this paper, a new structure, referred to as the hyperblock, is proposed to combine speculative execution with predicated execution for both compile-time optimization and scheduling of conditional branches.
Journal ArticleDOI

Constant propagation with conditional branches

TL;DR: Four algorithms, all conservitive in the sense that all constants may not be found, but each constant found is constant over all possible executions of the program, are presented.
Proceedings ArticleDOI

Global value numbers and redundant computations

TL;DR: This work proposes a redundancy elimination algorithm that is global (in that it deals with the entire program), yet able to recognize redundancy among expressions that are lexitally different, and takes advantage of second order effects.
Proceedings ArticleDOI

Constant propagation with conditional branches

TL;DR: The use of the algorithms presented here can result in smaller and faster compiled programs.
References
More filters
Proceedings ArticleDOI

A unified approach to global program optimization

TL;DR: A technique is presented for global analysis of program structure in order to perform compile time optimization of object code generated for expressions that includes constant propagation, common subexpression elimination, elimination of redundant register load operations, and live expression analysis.
Journal ArticleDOI

Control flow analysis

TL;DR: The basic control flow relationships are expressed in a directed graph and various graph constructs are found and shown to codify interesting global relationships.
Journal ArticleDOI

An empirical study of FORTRAN programs

TL;DR: The principal conclusion which may be drawn is the importance of a program ‘profile’, namely a table of frequency counts which record how often each statement is performed in a typical run; there are strong indications that profile‐keeping should become a standard practice in all computer systems, for casual users as well as system programmers.
Book

LISP 1.5 Programmer's Manual

TL;DR: The LISP language is designed primarily for symbolic data processing used for symbolic calculations in differential and integral calculus, electrical circuit theory, mathematical logic, game playing, and other fields of artificial intelligence.
Journal ArticleDOI

Object code optimization

TL;DR: Methods of analyzing the control flow and data flow of programs during compilation are applied to transforming the program to improve object time efficiency and implementation of these and other optimizations in OS/360 FORTRAN H are described.