This work introduces IncSFS, the first incremental full-sparse flow-sensitive pointer analysis algorithm for C/C++ programs that propagates increases and decreases in points-to sets in an interleaved manner, supporting code deletion and insertion within a single analysis pass.
Abstract
Pointer analysis is a fundamental technique for compiler optimization and program analysis. Flow-sensitive pointer analysis provides high precision but is difficult to scale to large projects. Tailored for rapid iteration scenarios where software evolves continuously, we introduce IncSFS, the first incremental full-sparse flow-sensitive pointer analysis algorithm for C/C++ programs. IncSFS first transforms the value-flow graph into a constraint graph and performs strongly connected component detection to ensure precision. It then propagates increases and decreases in points-to sets in an interleaved manner, supporting code deletion and insertion within a single analysis pass. IncSFS is guaranteed to terminate and compute the least fixed point when the points-to relation remains object-acyclic during analysis. Experiments on six large-scale real-world projects show that IncSFS is precise and efficient, achieving average speedups of 9.60x over full flow-sensitive pointer analysis and 5.84x over the traditional reset-recompute approach. It also improves efficiency by 15.8% over state-of-the-art incremental pointer analysis algorithms that propagate points-to-set changes.
This paper explores a new perspective: applying semantic-preserving compiler optimizations directly to intermediate representation (IR) before pointer analysis, which is modular, analysis-agnostic, and easily integrates with existing tools.
Heap abstraction critically affects both the efficiency and precision of pointer analysis for Java programs. By merging heap objects allocated at different program points, heap abstractions can significantly improve analysis efficiency, but often at the cost of precision. Mahjong, a state-of-the-art heap abstraction ba...
Jin-Peng Wang, Yu-Fei Liang, Zhong-Sheng Zhan et al.· 0 citations
This paper explores copy-and-patch as a foundation for dynamic program analysis, and implements four analyses on top of an existing copy-and-patch JIT for R: code instrumentation, code coverage, performance profiling, and native debugging.
Martin Kocourek, Filip Křikava, Jan Vitek· 0 citations
Precise analysis of multi-threaded programs requires combining flow-sensitive pointer analysis (FSPTA) with interleaving and lock analysis (ILA) to reason about cross-thread value flows under feasible concurrent executions. ILA computes may-happen-in-parallel (MHP) relations and lock-release spans to determine when sha...
Jia-Wei Yang, Xiao Cheng, Jia-Wei Wang et al.· 0 citations
Variadic generics are a powerful tool for type-safe meta-programming. Yet in most widely used languages, they remain an"expert-only"feature due to their reliance on complex patterns such as recursive decomposition or expansion expressions that do not compose naturally with ordinary control flow. In C++, for example, ac...
Memory-corruption errors remain a leading cause of high-impact vulnerabilities in C and C++ software. Deterministic detection, however, remains difficult to deploy: compiler-based sanitizers require source code and control of the build pipeline, hardware-assisted schemes depend on specific platforms, and dynamic binary...
Adel Belkhiri, Michel Dagenais, Maxime Lamothe· 0 citations
We use cookies to run the site and, with your consent, for analytics and to show ads.
See our Cookie Policy.