Search papers, labs, and topics across Lattice.
This paper introduces IncSFS, an innovative incremental full-sparse flow-sensitive pointer analysis algorithm specifically designed for C/C++ programs, addressing the scalability challenges of traditional flow-sensitive pointer analysis. By transforming the value-flow graph into a constraint graph and employing strongly connected component detection, IncSFS achieves high precision while allowing for efficient code modifications within a single analysis pass. Experimental results demonstrate that IncSFS significantly outperforms existing methods, achieving average speedups of 9.60x over full flow-sensitive analysis and 5.84x over conventional reset-recompute approaches, while also enhancing efficiency compared to state-of-the-art incremental algorithms.
IncSFS achieves a staggering 9.60x speedup over traditional pointer analysis methods, making it a game-changer for large-scale C/C++ projects.
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.