diff options
| author | bors <bors@rust-lang.org> | 2023-08-10 23:06:10 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2023-08-10 23:06:10 +0000 |
| commit | a9b2c6a0ce700ee6d1cdcab3f3c1f7997ae726d1 (patch) | |
| tree | c32f414f420b8332bbbe028761807c7b374b94d3 /compiler/rustc_codegen_llvm/src/llvm | |
| parent | 439d066bcf9496b1b8c8dde8bef3bce607a621bb (diff) | |
| parent | 4b154bc8e2bed4c69ae46dd761780a452073f771 (diff) | |
| download | rust-a9b2c6a0ce700ee6d1cdcab3f3c1f7997ae726d1.tar.gz rust-a9b2c6a0ce700ee6d1cdcab3f3c1f7997ae726d1.zip | |
Auto merge of #114005 - Zalathar:no-cstr, r=jackh726
coverage: Don't convert filename/symbol strings to `CString` for FFI LLVM APIs are usually perfectly happy to accept pointer/length strings, as long as we supply a suitable length value when creating a `StringRef` or `std::string`. This lets us avoid quite a few intermediate `CString` copies during coverage codegen. It also lets us use an `IndexSet<Symbol>` (instead of an `IndexSet<CString>`) when building the deduplicated filename table.
Diffstat (limited to 'compiler/rustc_codegen_llvm/src/llvm')
| -rw-r--r-- | compiler/rustc_codegen_llvm/src/llvm/ffi.rs | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/compiler/rustc_codegen_llvm/src/llvm/ffi.rs b/compiler/rustc_codegen_llvm/src/llvm/ffi.rs index 112b4a173a5..84157d1e25c 100644 --- a/compiler/rustc_codegen_llvm/src/llvm/ffi.rs +++ b/compiler/rustc_codegen_llvm/src/llvm/ffi.rs @@ -1707,6 +1707,8 @@ extern "C" { pub fn LLVMRustCoverageWriteFilenamesSectionToBuffer( Filenames: *const *const c_char, FilenamesLen: size_t, + Lengths: *const size_t, + LengthsLen: size_t, BufferOut: &RustString, ); @@ -1721,7 +1723,11 @@ extern "C" { BufferOut: &RustString, ); - pub fn LLVMRustCoverageCreatePGOFuncNameVar(F: &Value, FuncName: *const c_char) -> &Value; + pub fn LLVMRustCoverageCreatePGOFuncNameVar( + F: &Value, + FuncName: *const c_char, + FuncNameLen: size_t, + ) -> &Value; pub fn LLVMRustCoverageHashByteArray(Bytes: *const c_char, NumBytes: size_t) -> u64; #[allow(improper_ctypes)] |
