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 language | English (US) |
---|---|
Pages (from-to) | 568-585 |
Number of pages | 18 |
Journal | ACM Transactions on Programming Languages and Systems |
Volume | 19 |
Issue number | 4 |
DOIs | |
State | Published - Jul 1997 |
Keywords
- Algorithms
- Control-flow analysis
- D.3.4 [Programming Languages]
- Languages
- Processors - optimization
- Theory
ASJC Scopus subject areas
- Software