scispace - formally typeset
Journal ArticleDOI

Algorithms for computing the static single assignment form

Gianfranco Bilardi, +1 more
- 01 May 2003 - 
- Vol. 50, Iss: 3, pp 375-425
Reads0
Chats0
TLDR
This article proposes a framework within which properties of the SSA form and φ-placement algorithms are derived, based on a new relation called merge which captures succinctly the structure of a program's control flow graph that is relevant to its SSAform.
Abstract
The Static Single Assignment (SSA) form is a program representation used in many optimizing compilers. The key step in converting a program to SSA form is called φ-placement. Many algorithms for φ-placement have been proposed in the literature, but the relationships between these algorithms are not well understood.In this article, we propose a framework within which we systematically derive (i) properties of the SSA form and (ii) φ-placement algorithms. This framework is based on a new relation called merge which captures succinctly the structure of a program's control flow graph that is relevant to its SSA form. The φ-placement algorithms we derive include most of the ones described in the literature, as well as several new ones. We also evaluate experimentally the performance of some of these algorithms on the SPEC92 benchmarks.Some of the algorithms described here are optimal for a single variable. However, their repeated application is not necessarily optimal for multiple variables. We conclude the article by describing such an optimal algorithm, based on the transitive reduction of the merge relation, for multi-variable φ-placement in structured programs. The problem for general programs remains open.

read more

Content maybe subject to copyright    Report

Citations
More filters
Proceedings ArticleDOI

Flow-sensitive pointer analysis for millions of lines of code

TL;DR: A new flow-sensitive pointer analysis algorithm is presented that is an order of magnitude faster than the existing state of the art, enabling for the first time flow-sensitivity pointer analysis for programs with millions of lines of code.
Proceedings ArticleDOI

Semi-sparse flow-sensitive pointer analysis

TL;DR: This paper presents a new interprocedural, flow-sensitive pointer analysis algorithm that combines two ideas-semi-sparse analysis and a novel use of BDDs-that arise from a careful understanding of the unique challenges that face flow- sensitive pointer analysis.
Proceedings ArticleDOI

Escape analysis in the context of dynamic compilation and deoptimization

TL;DR: A new intraProcedural and interprocedural algorithm for escape analysis in the context of dynamic compilation where the compiler has to cope with dynamic class loading and deoptimization is presented.

Static Program Analysis based on Virtual Register Renaming

Jeremy Singer
TL;DR: This dissertation develops the principles, properties, and practice of SSI construction and data flow analysis and identifies the family of VRRSs, which are all CFGs with different virtual register naming conventions.
References
More filters
Book

Introduction to Algorithms

TL;DR: The updated new edition of the classic Introduction to Algorithms is intended primarily for use in undergraduate or graduate courses in algorithms or data structures and presents a rich variety of algorithms and covers them in considerable depth while making their design and analysis accessible to all levels of readers.
Book

Compilers: Principles, Techniques, and Tools

TL;DR: This book discusses the design of a Code Generator, the role of the Lexical Analyzer, and other topics related to code generation and optimization.
Journal ArticleDOI

Efficiently computing static single assignment form and the control dependence graph

TL;DR: In this article, the authors present new algorithms that efficiently compute static single assignment forms and control dependence graphs for arbitrary control flow graphs using the concept of {\em dominance frontiers} and give analytical and experimental evidence that these data structures are usually linear in the size of the original program.
Book

Haskell 98 language and libraries : the revised report

Peyton Jones, +1 more
TL;DR: The Haskell 98 Language: Lexical structure, Declarations and bindings, Predefined types and classes, and Libraries.
Related Papers (5)