Value Numbering
โ Scribed by PRESTON BRIGGS; KEITH D. COOPER; L. TAYLOR SIMPSON
- Publisher
- John Wiley and Sons
- Year
- 1997
- Tongue
- English
- Weight
- 241 KB
- Volume
- 27
- Category
- Article
- ISSN
- 0038-0644
No coin nor oath required. For personal study only.
โฆ Synopsis
Value numbering is a compiler-based program analysis method that allows redundant computations to be removed. This paper compares hash-based approaches derived from the classic local algorithm 1 with partitioning approaches based on the work of Alpern, Wegman and Zadeck. 2 Historically, the hash-based algorithm has been applied to single basic blocks or extended basic blocks. We have improved the technique to operate over the routine's dominator tree. The partitioning approach partitions the values in the routine into congruence classes and removes computations when one congruent value dominates another. We have extended this technique to remove computations that define a value in the set of available expressions (AVAIL). 3 Also, we are able to apply a version of Morel and Renvoise's partial redundancy elimination 4 to remove even more redundancies.
The paper presents a series of hash-based algorithms and a series of refinements to the partitioning technique. Within each series, it can be proved that each method discovers at least as many redundancies as its predecessors. Unfortunately, no such relationship exists between the hash-based and global techniques. On some programs, the hash-based techniques eliminate more redundancies than the partitioning techniques, while on others, partitioning wins. We experimentally compare the improvements made by these techniques when applied to real programs. These results will be useful for commercial compiler writers who wish to assess the potential impact of each technique before implementation. ยฉ1997 by John Wiley & Sons, Ltd.
KEY WORDS: code optimization; value numbering; redundancy elimination 1. To recognize certain algebraic identities, like i = i + 0 and j = j 1, and to use them to simplify the code and to expand the set of expressions known to be equal. 2. To evaluate expressions whose operands are constants and to propagate their values through the code.
๐ SIMILAR VOLUMES
Copyright 1998 Academic Press