Speeding Up Dataflow Analysis Using Flow-Insensitive Pointer Analysis

  • Authors:
  • Stephen Adams;Thomas Ball;Manuvir Das;Sorin Lerner;Sriram K. Rajamani;Mark Seigle;Westley Weimer

  • Affiliations:
  • -;-;-;-;-;-;-

  • Venue:
  • SAS '02 Proceedings of the 9th International Symposium on Static Analysis
  • Year:
  • 2002

Quantified Score

Hi-index 0.00

Visualization

Abstract

In recent years, static analysis has increasingly been applied to the problem of program verification. Systems for program verification typically use precise and expensive interprocedural dataflow algorithms that are difficult to scale to large programs. An attractive way to scale these analyses is to use a preprocessing step to reduce the number of dataflow facts propagated by the analysis and/or the number of statements to be processed, before the dataflow analysis is run. This paper describes an approach that achieves this effect. We first run a scalable, control-flow-insensitive pointer analysis to produce a conservative representation of value flow in the program. We query the value flow representation at the program points where a dataflow solution is required, in order to obtain a conservative over-approximation of the dataflow facts and the statements that must be processed by the analysis. We then run the dataflow analysis on this "slice" of the program.We present experimental evidence in support of our approach by considering two client dataflow analyses for program verification: typestate analysis, and software model checking. We show that in both cases, our approach leads to dramatic speedups.