On the Use of Data Flow Analysis in Static Profiling

Static profiling is a technique that produces estimates of execution likelihoods or frequencies based on source code analysis only. It is frequently used in determining cost/benefit ratios for certain compiler optimizations. In previous work,we introduced a simple algorithm to compute execution likelihoods,based on a control flow graph and heuristic branch prediction. In this paper we examine the benefits of using more involved analysis techniques in such a static profiler. In particular, we explore the use of value range propagation to improve the accuracy of the estimates, and we investigate the differences in estimating execution likelihoods and frequencies.

[1]  Thomas W. Reps,et al.  Precise interprocedural chopping , 1995, SIGSOFT FSE.

[2]  J. Voas,et al.  Software Testability: The New Verification , 1995, IEEE Softw..

[3]  Michael A. Harrison,et al.  Accurate static estimators for program optimization , 1994, PLDI '94.

[4]  Thomas W. Reps,et al.  Precise Interprocedural Dataflow Analysis with Applications to Constant Propagation , 1995, TAPSOFT.

[5]  Rudolf Eigenmann,et al.  Demand-Driven, Symbolic Range Propagation , 1995, LCPC.

[6]  Wen-mei W. Hwu,et al.  Improving static branch prediction in a compiler , 1998, Proceedings. 1998 International Conference on Parallel Architectures and Compilation Techniques (Cat. No.98EX192).

[7]  David W. Binkley,et al.  Interprocedural Constant Propagation using Dependence Graphs and a Data-Flow Model , 1994, CC.

[8]  Glenn Shafer,et al.  A Mathematical Theory of Evidence , 2020, A Mathematical Theory of Evidence.

[9]  L. Moonen,et al.  Prioritizing Software Inspection Results using Static Profiling , 2006, 2006 Sixth IEEE International Workshop on Source Code Analysis and Manipulation.

[10]  James R. Larus,et al.  Branch prediction for free , 1993, PLDI '93.

[11]  David W. Binkley,et al.  Interprocedural slicing using dependence graphs , 1988, SIGP.

[12]  Jason R. C. Patterson,et al.  Accurate static branch prediction by value range propagation , 1995, PLDI '95.

[13]  David W. Wall,et al.  Predicting program behavior using real or estimated profiles , 2004, SIGP.

[14]  Joseph A. Fisher,et al.  Predicting conditional branch directions from previous runs of a program , 1992, ASPLOS V.

[15]  Susan Horwitz,et al.  Fast and accurate flow-insensitive points-to analysis , 1997, POPL '97.

[16]  James R. Larus,et al.  Static branch frequency and program profile analysis , 1994, MICRO 27.

[17]  Jens Knoop,et al.  Constant Propagation on the Value Graph: Simple Constants and Beyond , 2000, CC.

[18]  Thomas Fahringer,et al.  A Uniied Symbolic Evaluation Framework for Parallelizing Compilers , 1999 .

[19]  Laurie J. Hendren,et al.  Generalized Constant Propagation: A Study in C , 1996, CC.

[20]  Daniel Jackson,et al.  A new model of program dependences for reverse engineering , 1994, SIGSOFT '94.