Why
In a recent investigation, there was a single failed assertion, which expanded into over 500 failed assertions further down the graph. Unfortunately, the failure occurred approximately 60% of the way through the section and the code was aggressively in-lined and folded by LLVM.
The result was that of the 500 assertions, the one that represented the root cause is located approximately 60% of the way through the report that is generated, with the remaining assertions being downstream failures.
When the failures are instead printed in WTO, the failure ended up as the 3rd failed assertion in the list (with the first two warning about unreachable code), which was immediately actionable.
What
Add option to print verification failures in weak topographical order (WTO) instead of linear order (as they appear in the ELF file).
Result
This tends to bring actionable failures closer to the start of the list of errors.
coverage: 90.052% (-0.3%) from 90.348%
when pulling 843a7651f263c97100adfd7f259587e5b43344d9 on Alan-Jowett:print_in_weak_topological_order
into 64ab8c034eb2fa563bbf4c6d181a482259b9f8eb on vbpf:main.
Resolves: #632
Why In a recent investigation, there was a single failed assertion, which expanded into over 500 failed assertions further down the graph. Unfortunately, the failure occurred approximately 60% of the way through the section and the code was aggressively in-lined and folded by LLVM.
The result was that of the 500 assertions, the one that represented the root cause is located approximately 60% of the way through the report that is generated, with the remaining assertions being downstream failures.
When the failures are instead printed in WTO, the failure ended up as the 3rd failed assertion in the list (with the first two warning about unreachable code), which was immediately actionable.
What Add option to print verification failures in weak topographical order (WTO) instead of linear order (as they appear in the ELF file).
Result This tends to bring actionable failures closer to the start of the list of errors.