# Control flow analysis in scheme

@inproceedings{Shivers1988ControlFA, title={Control flow analysis in scheme}, author={Olin Shivers}, booktitle={ACM-SIGPLAN Symposium on Programming Language Design and Implementation}, year={1988} }

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…

## 395 Citations

### Data-flow analysis and type recovery in Scheme

- Computer Science
- 1990

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

- Computer ScienceML '06
- 2006

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

- Computer Science
- 2011

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

- Computer ScienceESOP
- 1999

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

- Computer ScienceTOPL
- 1998

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

- Computer ScienceSAC '95
- 1995

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

- Computer ScienceCASCON
- 1996

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

- Computer ScienceSpringer Berlin Heidelberg
- 1999

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

- Computer ScienceOOPSLA '11
- 2011

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

- Computer ScienceICFP '96
- 1996

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.

## 15 References

### Rabbit: A Compiler for Scheme

- Computer Science
- 1978

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

- Computer ScienceSIGP
- 1986

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

- Computer ScienceSIGPLAN '86
- 1986

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)

- Computer ScienceLFP '86
- 1986

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.

- Computer Science
- 1982

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

- Computer ScienceCACM
- 1963

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

- Computer SciencePOPL
- 1977

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

- Computer Science
- 1976

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.