Optimal and Perfectly Parallel Algorithms for On-demand Data-flow Analysis

01/29/2020
by   Krishnendu Chatterjee, et al.
0

Interprocedural data-flow analyses form an expressive and useful paradigm of numerous static analysis applications, such as live variables analysis, alias analysis and null pointers analysis. The most widely-used framework for interprocedural data-flow analysis is IFDS, which encompasses distributive data-flow functions over a finite domain. On-demand data-flow analyses restrict the focus of the analysis on specific program locations and data facts. This setting provides a natural split between (i) an offline (or preprocessing) phase, where the program is partially analyzed and analysis summaries are created, and (ii) an online (or query) phase, where analysis queries arrive on demand and the summaries are used to speed up answering queries. In this work, we consider on-demand IFDS analyses where the queries concern program locations of the same procedure (aka same-context queries). We exploit the fact that flow graphs of programs have low treewidth to develop faster algorithms that are space and time optimal for many common data-flow analyses, in both the preprocessing and the query phase. We also use treewidth to develop query solutions that are embarrassingly parallelizable, i.e. the total work for answering each query is split to a number of threads such that each thread performs only a constant amount of work. Finally, we implement a static analyzer based on our algorithms, and perform a series of on-demand analysis experiments on standard benchmarks. Our experimental results show a drastic speed-up of the queries after only a lightweight preprocessing phase, which significantly outperforms existing techniques.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
09/20/2023

Parameterized Algorithms for Scalable Interprocedural Data-flow Analysis

Data-flow analysis is a general technique used to compute information of...
research
04/13/2023

Space-Time Tradeoffs for Conjunctive Queries with Access Patterns

In this paper, we investigate space-time tradeoffs for answering conjunc...
research
10/15/2018

Synthesizing Program-Specific Static Analyses

Designing a static analysis is generally a substantial undertaking, requ...
research
09/22/2021

Space-Time Tradeoffs for Answering Boolean Conjunctive Queries

In this paper, we investigate space-time tradeoffs for answering boolean...
research
09/16/2021

Efficient Path-Sensitive Data-Dependence Analysis

This paper presents a scalable path- and context-sensitive data-dependen...
research
05/10/2023

Scalable Demand-Driven Call Graph Generation for Python

Call graph generation is the foundation of inter-procedural static analy...
research
07/18/2023

Newtonian Program Analysis of Probabilistic Programs

Due to their quantitative nature, probabilistic programs pose non-trivia...

Please sign up or login with your details

Forgot password? Click here to reset