Control flow analysis in scheme

  title={Control flow analysis in scheme},
  author={Olin Shivers},
  booktitle={ACM-SIGPLAN Symposium on Programming Language Design and Implementation},
  • O. Shivers
  • Published in
    ACM-SIGPLAN Symposium on…
    1 June 1988
  • Computer Science, Engineering
Traditional flow analysis techniques, such as the ones typically employed by optimizing Fortran compilers, do not work for Scheme-like languages. This paper presents a flow analysis technique — control flow analysis — which is applicable to Scheme-like languages. As a demonstration application, the information gathered by control flow analysis is used to perform a traditional flow analysis problem, induction variable elimination. Extensions and limitations are discussed. The techniques… 

Figures from this paper

Data-flow analysis and type recovery in Scheme

This paper presents a technique for recovering type information from Scheme programs using flow analysis, which is semantically based, and is novel in that it correctly handles the "environment flow'* problem.

Type-sensitive control-flow analysis

A control-flow analysis that uses the program's type information to compute more precise results and discusses applications of the analysis with examples of optimizations enabled by the analysis that would not be possible using normal CFA.

Flow-sensitive control-flow analysis in linear-log time

This dissertation presents a fast, flow-sensitive type-recovery algorithm based on the linear-time,flow-insensitive sub-0CFA, which has been implemented as an experimental optimization into Chez Scheme compiler, where it has proven to be effective, justifying the elimination of about 60% of run-time type checks in a large set of bench-marks.

Interprocedural Control Flow Analysis

This work shows how to incorporate a number of key insights from Data Flow Analysis (involving such advanced interprocedural techniques as call strings and assumption sets) into Control Flow analysis (using Abstract Interpretation to induce the analyses from a collecting semantics).

A practical and flexible flow analysis for higher-order languages

The analysis described in this article unifies and extends previous work on flow analysis for higher-order languages supporting assignment and control operators and is parameterized over two polyvariance operators and a projection operator.

Control flow analysis: a functional languages compilation paradigm

This paper aims at showing that control flow analysis is very valuable in practice by presenting a fundamental optimization based on cfa: the closure representation algorithm, the essential optimizing phase of a X-language compiler.

A comparison of algorithms for interprocedural class analysis

This paper develops a general model for describing interprocedural class analysis algorithms, presents several previously developed algorithms using this model, and empirically assess the algorithms by applying them to a suite of Cecil applications.

Principles of Program Analysis

This book is unique in providing an overview of the four major approaches to program analysis: data flow analysis, constraint-based analysis, abstract interpretation, and type and effect systems.

Flow-sensitive type recovery in linear-log time

This work has developed a fast, flow-sensitive type-recovery algorithm based on the linear-time,flow-insensitive sub-0CFA, implemented as an experimental optimization for the commercial Chez Scheme compiler, and justifying the elimination of about 60% of run-time type checks in a large set of benchmarks.

Storage use analysis and its applications

A new program analysis method which is called Storage Use Analysis, which deduces how objects are used by the program and allows the optimization of their allocation, and shows the application of this analysis to two important optimizations: stack allocation and unboxing.

Rabbit: A Compiler for Scheme

A compiler for the lexically-scoped dialect of LISP known as SCHEME, which handles only a small basis set which reflects the semantics of lambda-calculus, and serves to produce code as good as that produced by more traditional compilers.

Revised3 report on the algorithmic language scheme

The report gives a defining description of the programming language Scheme. Scheme is a statically scoped and properly tail-recursive dialect of the Lisp programming language invented by Guy Lewis

ORBIT: an optimizing compiler for scheme

Orbit was an optimizing compiler for T, a dialect of Scheme, that directly spawned six PhD theses and one Masters thesis, and influenced many other projects as well, including SML of New Jersey.

A semantic model of reference counting and its abstraction (detailed summary)

Most interpreters for functional languages (as well as Lisp) employ at some level in the implementation a notion of sharing, whether manifested indirectly through an environment or directly via

LETS: An Expressional Loop Notation.

Abstract : Many loops can be more easily understood and manipulated if they are viewed as being built up out of operations on sequences of values. A notation is introduced which makes this viewpoint

Revised report on the algorithm language ALGOL 60

a survey of the basic coustituents arid fcuturcs of the language is given, and the formal notation, by which the syntactic structure is defined, is esplaincd. The sccnnd chapter lists all the basic

Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints

A program denotes computations in some universe of objects. Abstract interpretation of programs consists in using that denotation to describe computations in another universe of abstract objects, so

LAMBDA: The Ultimate Declarative

A new view of LAMBDA as a {\it renaming} operator is presented and contrasted with the usual functional view taken by LISP, which leads to several new insights into the nature of the LISp evaluation mechanism and the symmetry between form and function, evaluation and application, and control and environment.