Interprocedural Control Flow Analysis of First-Order Programs with Tail-Call Optimization

Research output: Contribution to journalArticle

8 Citations (Scopus)

Abstract

Knowledge of low-level control flow is essential for many compiler optimizations. In systems with tail-call optimization, the determination of interprocedural control flow is complicated by the fact that because of tail-call optimization, control flow at procedure returns is not readily evident from the call graph of the program. This article shows how interprocedural control-flow analysis of first-order programs can be carried out using well-known concepts from parsing theory. In particular, we show that context-insensitive (or zeroth-order) control-flow analysis corresponds to the notion of FOLLOW sets in context-free grammars, while context-sensitive (or first-order) control-flow analysis corresponds to the notion of LR(1) items. The control-flow information so obtained can be used to improve the precision of interprocedural dataflow analyses as well as to extend certain low-level code optimizations across procedure boundaries.

Original languageEnglish (US)
Pages (from-to)568-585
Number of pages18
JournalACM Transactions on Programming Languages and Systems
Volume19
Issue number4
StatePublished - Jul 1997

Fingerprint

Flow control
Context free grammars
Level control

Keywords

  • Algorithms
  • Control-flow analysis
  • D.3.4 [Programming Languages]
  • Languages
  • Processors - optimization
  • Theory

ASJC Scopus subject areas

  • Computer Graphics and Computer-Aided Design
  • Software

Cite this

@article{888fe66b3cee465f9f8fd384d7a6fc56,
title = "Interprocedural Control Flow Analysis of First-Order Programs with Tail-Call Optimization",
abstract = "Knowledge of low-level control flow is essential for many compiler optimizations. In systems with tail-call optimization, the determination of interprocedural control flow is complicated by the fact that because of tail-call optimization, control flow at procedure returns is not readily evident from the call graph of the program. This article shows how interprocedural control-flow analysis of first-order programs can be carried out using well-known concepts from parsing theory. In particular, we show that context-insensitive (or zeroth-order) control-flow analysis corresponds to the notion of FOLLOW sets in context-free grammars, while context-sensitive (or first-order) control-flow analysis corresponds to the notion of LR(1) items. The control-flow information so obtained can be used to improve the precision of interprocedural dataflow analyses as well as to extend certain low-level code optimizations across procedure boundaries.",
keywords = "Algorithms, Control-flow analysis, D.3.4 [Programming Languages], Languages, Processors - optimization, Theory",
author = "Debray, {Saumya K} and Proebsting, {Todd A}",
year = "1997",
month = "7",
language = "English (US)",
volume = "19",
pages = "568--585",
journal = "ACM Transactions on Programming Languages and Systems",
issn = "0164-0925",
publisher = "Association for Computing Machinery (ACM)",
number = "4",

}

TY - JOUR

T1 - Interprocedural Control Flow Analysis of First-Order Programs with Tail-Call Optimization

AU - Debray, Saumya K

AU - Proebsting, Todd A

PY - 1997/7

Y1 - 1997/7

N2 - Knowledge of low-level control flow is essential for many compiler optimizations. In systems with tail-call optimization, the determination of interprocedural control flow is complicated by the fact that because of tail-call optimization, control flow at procedure returns is not readily evident from the call graph of the program. This article shows how interprocedural control-flow analysis of first-order programs can be carried out using well-known concepts from parsing theory. In particular, we show that context-insensitive (or zeroth-order) control-flow analysis corresponds to the notion of FOLLOW sets in context-free grammars, while context-sensitive (or first-order) control-flow analysis corresponds to the notion of LR(1) items. The control-flow information so obtained can be used to improve the precision of interprocedural dataflow analyses as well as to extend certain low-level code optimizations across procedure boundaries.

AB - Knowledge of low-level control flow is essential for many compiler optimizations. In systems with tail-call optimization, the determination of interprocedural control flow is complicated by the fact that because of tail-call optimization, control flow at procedure returns is not readily evident from the call graph of the program. This article shows how interprocedural control-flow analysis of first-order programs can be carried out using well-known concepts from parsing theory. In particular, we show that context-insensitive (or zeroth-order) control-flow analysis corresponds to the notion of FOLLOW sets in context-free grammars, while context-sensitive (or first-order) control-flow analysis corresponds to the notion of LR(1) items. The control-flow information so obtained can be used to improve the precision of interprocedural dataflow analyses as well as to extend certain low-level code optimizations across procedure boundaries.

KW - Algorithms

KW - Control-flow analysis

KW - D.3.4 [Programming Languages]

KW - Languages

KW - Processors - optimization

KW - Theory

UR - http://www.scopus.com/inward/record.url?scp=0031191619&partnerID=8YFLogxK

UR - http://www.scopus.com/inward/citedby.url?scp=0031191619&partnerID=8YFLogxK

M3 - Article

AN - SCOPUS:0031191619

VL - 19

SP - 568

EP - 585

JO - ACM Transactions on Programming Languages and Systems

JF - ACM Transactions on Programming Languages and Systems

SN - 0164-0925

IS - 4

ER -