Commit ac398ab
committed
fp-stability: confirm, rank, and disambiguate dd_line hotspots
dd_line reports a minimal set of source lines, but presented them as a flat, equally-weighted list of confident warnings. Three problems: (1) no check that the reported lines actually reproduce the instability; (2) fypp #:for/#:def expansion collapses many generated computations onto one .fpp line, so a hit can be the wrong instance; (3) a multi-op line did not say which op was at fault.
This adds, reusing the verified Verrou --source mechanism (matches file+line+symbol, captured via --gen-source):
- Confirmation: perturb only the suspect lines; lines that fail to reproduce the deviation are downgraded from ::warning:: to ::notice:: (unconfirmed).
- Per-line ranking: perturb each line alone and rank by the share of float-proxy it reproduces, so the dominant computation is named (e.g. m_time_steppers.fpp:510 = 100%).
- Cancellation cross-reference: label dd_line hotspots that coincide with a stage-F catastrophic-cancellation site.
- Macro-expansion flag: mark hotspots whose .fpp line sits inside a #:for/#:def expansion as instance-ambiguous.
Surfaced in console, the GitHub step summary (ranked, tagged list), and inline annotations. Pure helpers covered by toolchain/mfc/test_fp_stability.py (22 tests, TDD). Verified end-to-end on a serial debug build.1 parent 4a73bf3 commit ac398ab
2 files changed
Lines changed: 480 additions & 18 deletions
0 commit comments