Demand-driven Alias Analysis : Formalizing Bidirectional Analyses for Soundness and Precision

02/03/2018
by   Swati Jaiswal, et al.
0

A demand-driven approach to program analysis have been viewed as efficient algorithms to compute only the information required to serve a target demand. In contrast, an exhaustive approach computes all information in anticipation of it being used later. However, for a given set of demands, demand-driven methods are believed to compute the same information that would be computed by the corresponding exhaustive methods. We investigate the precision and bidirectional nature of demand-driven methods and show that: (a) demand-driven methods can be formalized inherently as bidirectional data flow analysis because the demands are propagated against the control flow and the information to satisfy the demands is propagated along the control flow. We extend the formalization of the Meet Over Paths solution to bidirectional flows. This formalization helps us to prove the soundness and precision of our analysis, and (b) since a demand-driven method computes only the required information to meet a demand, it should be able to reduce the imprecision caused by data abstractions and hence should be more precise than an exhaustive method. We show that while this is indeed the case with Java, for C/C++, the precision critically hinges on how indirect assignments are handled. We use this insight and propose a demand-driven alias analysis that is more precise than an exhaustive analysis for C/C++ too. We have chosen devirtualization as an application. Our measurements show that our method is not only more efficient but more precise than the existing demand-driven method, as well as the corresponding exhaustive method.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
09/16/2021

Efficient Path-Sensitive Data-Dependence Analysis

This paper presents a scalable path- and context-sensitive data-dependen...
research
11/07/2022

Symbolic Abstract Heaps for Polymorphic Information-flow Guard Inference (Extended Version)

In the realm of sound object-oriented program analyses for information-f...
research
09/18/2019

Extended Magic for Negation: Efficient Demand-Driven Evaluation of Stratified Datalog with Precise Complexity Guarantees

Given a set of Datalog rules, facts, and a query, answers to the query c...
research
04/24/2023

Context Sensitivity without Contexts: A Cut-Shortcut Approach to Fast and Precise Pointer Analysis

Over the past decades, context sensitivity has been considered as one of...
research
05/10/2023

Scalable Demand-Driven Call Graph Generation for Python

Call graph generation is the foundation of inter-procedural static analy...
research
02/09/2021

NOELLE Offers Empowering LLVM Extensions

Modern and emerging architectures demand increasingly complex compiler a...
research
05/04/2020

Learning Strong Substitutes Demand via Queries

This paper addresses the computational challenges of learning strong sub...

Please sign up or login with your details

Forgot password? Click here to reset