Results 1 -
3 of
3
Linear-time Subtransitive Control Flow Analysis
, 1997
"... We present a linear-time algorithm for boundedtype programs that builds a directed graph whose transitive closure gives exactly the results of the standard (cubic-time) Control-Flow Analysis (CFA) algorithm. Our algorithm can be used to list all functions calls from all call sites in (optimal) quadr ..."
Abstract
-
Cited by 41 (1 self)
- Add to MetaCart
We present a linear-time algorithm for boundedtype programs that builds a directed graph whose transitive closure gives exactly the results of the standard (cubic-time) Control-Flow Analysis (CFA) algorithm. Our algorithm can be used to list all functions calls from all call sites in (optimal) quadratic time. More importantly, it can be used to give linear-time algorithms for CFAconsuming applications such as: ffl effects analysis: find the side-effecting expressions in a program. ffl k-limited CFA: for each call-site, list the functions if there are only a few of them ( k) and otherwise output "many". ffl called-once analysis: identify all functions called from only one call-site. 1 Introduction The control-flow graph of a program plays a central role in compilation -- it identifies the block and loop structure in a program, a prerequisite for many code optimizations. For first-order languages, this graph can be directly constructed from a program because information about flow of ...
Interprocedural Analyses: A Comparison
- Journal of Logic Programming (JLP
, 1999
"... We present a framework for program analysis of languages with procedures which is general enough to allow for a comparison of various approaches to interprocedural analysis. Our framework is based on a small-step operational semantics and subsumes both frameworks for imperative and for logic languag ..."
Abstract
-
Cited by 4 (2 self)
- Add to MetaCart
We present a framework for program analysis of languages with procedures which is general enough to allow for a comparison of various approaches to interprocedural analysis. Our framework is based on a small-step operational semantics and subsumes both frameworks for imperative and for logic languages. We consider reachability analysis, that is, the problem of approximating the sets of program states reaching program points. We use our framework in order to clarify the impact of several independent design decisions on the precision of the analysis. Thus, we compare intraprocedural forward accumulation with intraprocedural backward accumulation. Furthermore, we consider both relational and functional approaches. While for relational analysis the accumulation strategy makes no difference in precision, we prove for functional analysis that forward accumulation may lose precision against backward accumulation. Concerning the relative precision of relational analyses and corresponding funct...
Control-Flow Analysis for ML in Linear Time
- In International Conference on Functional Programming (ICFP
, 1996
"... Standard control-flow analysis (often called 0-CFA) is thought to be a cubic time problem --- the standard algorithm for it is cubic time and the conventional wisdom is that this algorithm cannot be improved because of its strong connections with dynamic transitive closure. This algorithm is even cu ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
Standard control-flow analysis (often called 0-CFA) is thought to be a cubic time problem --- the standard algorithm for it is cubic time and the conventional wisdom is that this algorithm cannot be improved because of its strong connections with dynamic transitive closure. This algorithm is even cubic if we restrict attention to ML programs whose types have bounded size. We present a new algorithm for standard control-flow analysis that has linear time complexity for ML programs whose types have bounded size. This algorithm is simple, incremental, demand-driven and easily adapted to polyvariant usage. Early experimental evidence suggests that this new algorithm is significantly faster than the standard algorithm. (This paper contains 4876 words (according to delatex).) 1 Introduction The control-flow graph of a program plays a central role in compilation -- it identifies the block and loop structure in a program, a prerequisite for many code optimizations. For first-order languages, ...

