Saved in:
Bibliographic Details
Main Authors: Krogstie, Håvard Rognebakke, Bahmann, Helge, Själander, Magnus, Reissmann, Nico
Format: Preprint
Published: 2025
Subjects:
Online Access:https://arxiv.org/abs/2512.07299
Tags: Add Tag
No Tags, Be the first to tag this record!
_version_ 1866911307130732544
author Krogstie, Håvard Rognebakke
Bahmann, Helge
Själander, Magnus
Reissmann, Nico
author_facet Krogstie, Håvard Rognebakke
Bahmann, Helge
Själander, Magnus
Reissmann, Nico
contents Compiling files individually lends itself well to parallelization, but forces the compiler to operate on incomplete programs. State-of-the-art points-to analyses guarantee sound solutions only for complete programs, requiring summary functions to describe any missing program parts. Summary functions are rarely available in production compilers, however, where soundness and efficiency are non-negotiable. This paper presents an Andersen-style points-to analysis that efficiently produces sound solutions for incomplete C programs. The analysis accomplishes soundness by tracking memory locations and pointers that are accessible from external modules, and efficiency by performing this tracking implicitly in the constraint graph. We show that implicit pointee tracking makes the constraint solver 15$\times$ faster than any combination of five different state-of-the-art techniques using explicit pointee tracking. We also present the Prefer Implicit Pointees (PIP) technique that further reduces the use of explicit pointees. PIP gives an additional speedup of 1.9$\times$, compared to the fastest solver configuration not benefiting from PIP. The precision of the analysis is evaluated in terms of an alias-analysis client, where it reduces the number of MayAlias-responses by 40% compared to LLVM's BasicAA pass alone. Finally, we show that the analysis is scalable in terms of memory, making it suitable for optimizing compilers in practice.
format Preprint
id arxiv_https___arxiv_org_abs_2512_07299
institution arXiv
publishDate 2025
record_format arxiv
spellingShingle PIP: Making Andersen's Points-to Analysis Sound and Practical for Incomplete C Programs
Krogstie, Håvard Rognebakke
Bahmann, Helge
Själander, Magnus
Reissmann, Nico
Programming Languages
Compiling files individually lends itself well to parallelization, but forces the compiler to operate on incomplete programs. State-of-the-art points-to analyses guarantee sound solutions only for complete programs, requiring summary functions to describe any missing program parts. Summary functions are rarely available in production compilers, however, where soundness and efficiency are non-negotiable. This paper presents an Andersen-style points-to analysis that efficiently produces sound solutions for incomplete C programs. The analysis accomplishes soundness by tracking memory locations and pointers that are accessible from external modules, and efficiency by performing this tracking implicitly in the constraint graph. We show that implicit pointee tracking makes the constraint solver 15$\times$ faster than any combination of five different state-of-the-art techniques using explicit pointee tracking. We also present the Prefer Implicit Pointees (PIP) technique that further reduces the use of explicit pointees. PIP gives an additional speedup of 1.9$\times$, compared to the fastest solver configuration not benefiting from PIP. The precision of the analysis is evaluated in terms of an alias-analysis client, where it reduces the number of MayAlias-responses by 40% compared to LLVM's BasicAA pass alone. Finally, we show that the analysis is scalable in terms of memory, making it suitable for optimizing compilers in practice.
title PIP: Making Andersen's Points-to Analysis Sound and Practical for Incomplete C Programs
topic Programming Languages
url https://arxiv.org/abs/2512.07299