about summary refs log tree commit diff
path: root/compiler/rustc_codegen_llvm/src/back
diff options
context:
space:
mode:
authorMatthias Krüger <476013+matthiaskrgr@users.noreply.github.com>2025-07-28 08:36:54 +0200
committerGitHub <noreply@github.com>2025-07-28 08:36:54 +0200
commitc462895a6f0b463ff0c1c1db2a3a654d7e5976c7 (patch)
treee8348ba063016fa8b556ba8f6ead8ba80fcdf80b /compiler/rustc_codegen_llvm/src/back
parentec86930c1d909b8114ce055c69746ca2c84b2ef4 (diff)
parent89b6b0b6a482cb0d632f54f14936def9c034570d (diff)
downloadrust-c462895a6f0b463ff0c1c1db2a3a654d7e5976c7.tar.gz
rust-c462895a6f0b463ff0c1c1db2a3a654d7e5976c7.zip
Rollup merge of #144530 - Zalathar:instances-used, r=lqd
coverage: Infer `instances_used` from `pgo_func_name_var_map`

In obscure circumstances involving macro-expanded spans, we would sometimes emit a covfun record for a function with no physical coverage counters, and therefore no corresponding entry in the “PGO names” section of the binary. The absence of that name entry causes `llvm-cov` to fail with the cryptic error message:

```text
malformed instrumentation profile data: function name is empty
```

We can eliminate this mismatch by removing `instances_used` entirely, and instead inferring its contents from the keys of `pgo_func_name_var_map`.

This makes it impossible for a "used" function to lack a PGO name entry.

---

This is an attempt to eliminate the cause of rust-lang/rust#141577 when re-landing changes like rust-lang/rust#144298 in the future.

I haven't been able to reproduce the underlying issue in an in-tree test, because the only known repro involves a non-trivial derive proc-macro that relies on `syn` and `proc-macro2`. But I have manually verified in a separate branch that this change would have prevented the reoccurrence of https://github.com/rust-lang/rust/issues/141577#issuecomment-3120667286.
Diffstat (limited to 'compiler/rustc_codegen_llvm/src/back')
0 files changed, 0 insertions, 0 deletions