A practical and flexible flow analysis for higher-order languages

J. Michael Ashley
1996 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages - POPL '96  
A flow analysis collects data-flow and control-flow information about programs. A compiler can use this information to enable optimizations. The analysis described in this article unifies and extends previous work on flow analyses for higher-order languages supporting assignment and control operators. The analysis is abstract interpretation-based and is parameterized over two polyvariance operators and a projection operator. These operators are used to regulate the speed and accuracy of the
more » ... ysis. An implementation of the analysis is incorporated into and used in a production Scheme compiler. The analysis can process any legal Scheme program without modification. Others have demonstrated that a 0CFA analysis can enable optimizations, but a 0CFA analysis is O(n 3 ). An O(n) instantiation of our analysis successfully enables the optimization of closure representations and procedure calls. Experiments with the cheaper instantiation show that it is as effective as 0CFA for these optimizations.
doi:10.1145/237721.237773 dblp:conf/popl/Ashley96 fatcat:xl3qtyapsbfflbv6nh5naykdle