ankurrj7 wrote:

Retracting this PR.

After further review, this approach is too narrow for the coverage issue I am 
trying to solve in large codebases.

The patch only handles sink calls that Clang can prove while compiling a single 
translation unit, for example when the callee body is visible and the CFG shows 
that it cannot reach a normal exit. That helps same-TU wrapper chains and 
infinite loops, but it does not solve the more important case where the sink is 
hidden behind a cross-translation-unit call chain such as:

```text
file1: f1() -> file2: f2() -> file3: f3() -> file4: exit()
```

Without visible bodies or propagated `noreturn` annotations, Clang coverage 
mapping cannot prove that `f1()` does not return when compiling `file1`, so 
this PR would still leave the large-codebase behavior unresolved.

The better direction is likely a broader coverage-mapping/counter-placement 
design that gives the continuation after calls its own runtime count, closer to 
CFG/basic-block coverage behavior, rather than relying only on frontend-local 
sink inference.

Closing this PR for now rather than landing a partial fix that does not address 
the main use case.


https://github.com/llvm/llvm-project/pull/200190
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to