Control-Flow Analysis of Function Calls and Returns by Abstract Interpretation
Résumé
We derive a control-flow analysis for a simple higher-order functional language. Contrary to existing direct-style analyses, our analysis approximates the interprocedural control-flow of both function calls and returns in the presence of first-class functions and tail-call optimization. In addition to an abstract environment, our analysis computes for each expression an abstract call-stack, effectively approximating where function calls return. The analysis is systematically calculated by abstract interpretation of the stack-based CaEK abstract machine of Flanagan et al. using a series of Galois connections. From the analysis we extract an equivalent constraint-based formulation, thereby providing a rational reconstruction of a constraint-based CFA from abstract interpretation principles.
Domaines
Langage de programmation [cs.PL]Origine | Fichiers produits par l'(les) auteur(s) |
---|