Update LLVM coverage mapping format version supported by rustc (#1267)

rust-lang/rust#91207 updates the coverage mapping format to Version 5 or
6, depending on the built-in version of LLVM (12 or 13, respectively).

This change updates the dev guide to match the recent changes.
This commit is contained in:
Rich Kadel 2021-12-03 09:26:47 -08:00 committed by GitHub
parent 2cee5a9be8
commit a374e7d8bb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 8 additions and 10 deletions

View File

@ -221,17 +221,15 @@ substitution combinations), `mapgen`'s `finalize()` method queries the
and `CodeRegion`s; and calls LLVM codegen APIs to generate and `CodeRegion`s; and calls LLVM codegen APIs to generate
properly-configured variables in LLVM IR, according to very specific properly-configured variables in LLVM IR, according to very specific
details of the [_LLVM Coverage Mapping Format_][coverage-mapping-format] details of the [_LLVM Coverage Mapping Format_][coverage-mapping-format]
(Version 4).[^llvm-and-covmap-versions] (Version 6).[^llvm-and-covmap-versions]
[^llvm-and-covmap-versions]: The Rust compiler (as of [^llvm-and-covmap-versions]: The Rust compiler (as of <!-- date: 2021-12 -->
January 2021) supports _LLVM Coverage Mapping Format_ Version 4 (the most December 2021) supports _LLVM Coverage Mapping Format_ Version 5 or 6. Version 5
up-to-date version of the format, at the time of this writing) for improved was introduced in _LLVM 12_, which is (as of this writing) the minimum LLVM
compatibility with other LLVM-based compilers (like _Clang_), and to take version supported by the current version of Rust. Version 6 was introduced in
advantage of some format optimizations. Version 4 was introduced in _LLVM 11_, _LLVM 13_, which is currently the default LLVM version for Rust. The Rust
which is currently the default LLVM version for Rust. Note that the Rust compiler will automatically use the most up-to-date coverage mapping format
compiler optionally supports some earlier LLVM versions, prior to _LLVM 11_. If version that is compatible with the compiler's built-in version of LLVM.
`rustc` is configured to use an incompatible version of LLVM, compiling with `-Z
instrument-coverage` will generate an error message.
```rust ```rust
pub fn finalize<'ll, 'tcx>(cx: &CodegenCx<'ll, 'tcx>) { pub fn finalize<'ll, 'tcx>(cx: &CodegenCx<'ll, 'tcx>) {