# LLVM Static Analysis for Program Characterization and Memory Reuse Profile Estimation

arXiv: https://arxiv.org/abs/2311.12883 · HTML: https://mlsanity.com/paper/2311.12883/

## Key facts

- Cited by 1 papers in the map (data through 14 Oct 2026).
- First posted on arXiv 20 Nov 2023.

## Built on by (most cited first, 1 of 1)

- [Automated detection of atomicity violations in large-scale systems](https://mlsanity.com/paper/2504.00521/) (2025)

## Abstract (arXiv)

Profiling various application characteristics, including the number of different arithmetic operations performed, memory footprint, etc., dynamically is time- and space-consuming. On the other hand, static analysis methods, although fast, can be less accurate. This paper presents an LLVM-based probabilistic static analysis method that accurately predicts different program characteristics and estimates the reuse distance profile of a program by analyzing the LLVM IR file in constant time, regardless of program input size. We generate the basic-block-level control flow graph of the target application kernel and determine basic-block execution counts by solving the linear balance equation involving the adjacent basic blocks' transition probabilities. Finally, we represent the kernel memory accesses in a bracketed format and employ a recursive algorithm to calculate the reuse distance profile. The results show that our approach can predict application characteristics accurately compared to another LLVM-based dynamic code analysis tool, Byfl.
