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

Research output: Contribution to journalArticle

8 Scopus citations

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
DOIs
StatePublished - Jul 1997

Keywords

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

ASJC Scopus subject areas

  • Software

Fingerprint Dive into the research topics of 'Interprocedural Control Flow Analysis of First-Order Programs with Tail-Call Optimization'. Together they form a unique fingerprint.

  • Cite this