diff options
| author | Zalathar <Zalathar@users.noreply.github.com> | 2024-12-12 20:54:33 +1100 |
|---|---|---|
| committer | Zalathar <Zalathar@users.noreply.github.com> | 2024-12-12 20:54:33 +1100 |
| commit | f7c6a2cf11eb075ea56b54c48756ee55d0b2aeb1 (patch) | |
| tree | f1789e082eaada769880e839e72a2cf34e3f4698 /compiler/rustc_codegen_llvm/src/llvm/ffi.rs | |
| parent | 903d2976fdb6ceeb65526b7555d8d1e6f8c02134 (diff) | |
| download | rust-f7c6a2cf11eb075ea56b54c48756ee55d0b2aeb1.tar.gz rust-f7c6a2cf11eb075ea56b54c48756ee55d0b2aeb1.zip | |
Fix our `llvm::Bool` typedef to be signed, to match `LLVMBool`
In the LLVM-C API, boolean values are passed as `typedef int LLVMBool`, but our Rust-side typedef was using `c_uint` instead. Signed and unsigned integers have the same ABI on most platforms, but that isn't universally true, so we should prefer to be consistent with LLVM.
Diffstat (limited to 'compiler/rustc_codegen_llvm/src/llvm/ffi.rs')
| -rw-r--r-- | compiler/rustc_codegen_llvm/src/llvm/ffi.rs | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/compiler/rustc_codegen_llvm/src/llvm/ffi.rs b/compiler/rustc_codegen_llvm/src/llvm/ffi.rs index 8b4523bd252..d62632d1431 100644 --- a/compiler/rustc_codegen_llvm/src/llvm/ffi.rs +++ b/compiler/rustc_codegen_llvm/src/llvm/ffi.rs @@ -17,7 +17,9 @@ use super::debuginfo::{ DebugEmissionKind, DebugNameTableKind, }; -pub type Bool = c_uint; +/// In the LLVM-C API, boolean values are passed as `typedef int LLVMBool`, +/// which has a different ABI from Rust or C++ `bool`. +pub type Bool = c_int; pub const True: Bool = 1 as Bool; pub const False: Bool = 0 as Bool; |
