Precise and Scalable Context-Sensitive Pointer Analysis via Value Flow Graph

被引:3
|
作者
Li, Lian [1 ]
Cifuentes, Cristina [1 ]
Keynes, Nathan [1 ]
机构
[1] Oracle Labs, Brisbane, Qld, Australia
关键词
context-sensitive analysis; flow-sensitive analysis; demand-driven; function summary; CFL-reachability; TO ANALYSIS; ALIAS ANALYSIS;
D O I
10.1145/2555670.2466483
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
In this paper, we propose a novel method for context-sensitive pointer analysis using the value flow graph (VFG) formulation. We achieve context-sensitivity by simultaneously applying function cloning and computing context-free language reachability (CFL-reachability) in a novel way. In contrast to existing clone-based and CFL-based approaches, flow-sensitivity is easily integrated in our approach by using a flow-sensitive VFG where each value flow edge is computed in a flow-sensitive manner. We apply context-sensitivity to both local variables and heap objects and propose a new approximation for heap cloning. We prove that our approach can achieve context-sensitivity without loss of precision, i.e., it is as precise as inlining all function calls. We develop an efficient algorithm and implement a context-, flow-, and field-sensitive pointer analysis with heap cloning support in LLVM. We evaluate the efficiency and precision of our implementation using standard SPEC CPU2006 benchmarks. Our experimental results show that the analysis is much faster than existing approaches, it scales well to large real-world applications, and it enables more effective compiler optimizations.
引用
收藏
页码:85 / 96
页数:12
相关论文
共 50 条
  • [1] Precise and Scalable Context-Sensitive Pointer Analysis via Value Flow Graph
    Li, Lian
    Cifuentes, Cristina
    Keynes, Nathan
    PROCEEDINGS OF THE ACM SIGPLAN INTERNATIONAL SYMPOSIUM ON MEMORY MANAGEMENT (ISMM '13), 2013, : 85 - 96
  • [2] Bootstrapping: A Technique for Scalable Flow and Context-Sensitive Pointer Alias Analysis
    Kahlon, Vineet
    PLDI'08: PROCEEDINGS OF THE 2008 SIGPLAN CONFERENCE ON PROGRAMMING LANGUAGE DESIGN & IMPLEMENTATION, 2008, : 249 - 259
  • [3] Bootstrapping: A technique for scalable flow and context-sensitive pointer alias analysis
    Kahlon, Vineet
    ACM SIGPLAN NOTICES, 2008, 43 (06) : 249 - 259
  • [4] Towards scalable flow and context sensitive pointer analysis
    Zhu, JW
    42nd Design Automation Conference, Proceedings 2005, 2005, : 831 - 836
  • [5] Level by Level: Making Flow- and Context-Sensitive Pointer Analysis Scalable for Millions of Lines of Code
    Yu, Hongtao
    Xue, Jingling
    Huo, Wei
    Feng, Xiaobing
    Zhang, Zhaoqing
    CGO 2010: THE EIGHTH INTERNATIONAL SYMPOSIUM ON CODE GENERATION AND OPTIMIZATION, PROCEEDINGS, 2010, : 218 - +
  • [6] Cycle elimination for invocation graph-based context-sensitive pointer analysis
    Choi, Woongsik
    Choe, Kwang-Moo
    INFORMATION AND SOFTWARE TECHNOLOGY, 2011, 53 (08) : 818 - 833
  • [7] Scalable context-sensitive flow analysis using instantiation constraints
    Fähndrich, M
    Rehof, J
    Das, M
    ACM SIGPLAN NOTICES, 2000, 35 (05) : 253 - 263
  • [8] A Context-Sensitive Pointer Analysis Framework for Rust and Its Application to Call Graph Construction
    Li, Wei
    He, Dongjie
    Gui, Yujiang
    Chen, Wenguang
    Xue, Jingling
    PROCEEDINGS OF THE 33RD ACM SIGPLAN INTERNATIONAL CONFERENCE ON COMPILER CONSTRUCTION, CC 2024, 2024, : 60 - 72
  • [9] EFFICIENT CONTEXT-SENSITIVE POINTER ANALYSIS FOR C PROGRAMS
    WILSON, RP
    LAM, MS
    SIGPLAN NOTICES, 1995, 30 (06): : 1 - 12
  • [10] Precise, efficient, and context-sensitive cache analysis
    Florian Brandner
    Camille Noûs
    Real-Time Systems, 2022, 58 : 36 - 84