English

Prime Path Coverage in the GNU Compiler Collection

Programming Languages 2025-05-22 v1

Abstract

We describe the implementation of the prime path coverage support introduced the GNU Compiler Collection 15, a structural coverage metric that focuses on paths of execution through the program. Prime path coverage strikes a good balance between the number of tests and coverage, and requires that loops are taken, taken more than once, and skipped. We show that prime path coverage subsumes modified condition/decision coverage (MC/DC). We improve on the current state-of-the-art algorithms for enumerating prime paths by using a suffix tree for efficient pruning of duplicated and redundant subpaths, reducing it to O(n2m)O(n^2m) from O(n2m2)O(n^2m^2), where nn is the length of the longest path and mm is the number of candidate paths. We can efficiently track candidate paths using a few bitwise operations based on a compact representation of the indices of the ordered prime paths. By analyzing the control flow graph, GCC can observe and instrument paths in a language-agnostic manner, and accurately report what code must be run in what order to achieve coverage.

Cite

@article{arxiv.2505.14694,
  title  = {Prime Path Coverage in the GNU Compiler Collection},
  author = {Jørgen Kvalsvik},
  journal= {arXiv preprint arXiv:2505.14694},
  year   = {2025}
}

Comments

11 pages, 12 figures

R2 v1 2026-07-01T02:26:05.080Z