Hi everyone,
While we have excellent resources like llvm-compile-time-tracker.com to monitor the impact of changes on the compiler’s own performance, I’m looking for something similar focused on the quality of the generated code at a granular, per-pass level.
Specifically, I am interested in whether there is a systematic study or a repository that maps how individual optimization passes (or specific sequences) impact micro-architectural metrics such as cache misses (L1/L2/L3 and TLB), instruction per cycle (IPC), branch mispredictions, and binary size vs. execution speed trade-offs.
The goal would be to understand the “ROI” of a single pass (e.g., LoopVectorize or GVN) not just in terms of general speedup, but in how it affects the hardware utilization of the target CPU.
Questions:
-
Is there any “leave-one-out” analysis that profiles the default pipeline against these hardware-level metrics across standard benchmarks (SPEC, LLVM Test Suite)?
-
Since O-levels are broad strokes, has there been an effort to identify “high-impact” vs. “noise” passes for specific architectures (e.g., x86_64 vs AArch64)?
-
Given the data in the compile-time tracker, would there be interest in a “Runtime Performance Tracker” that focuses on these granular hardware metrics?
Looking forward to your insights.
Fede