about summary refs log tree commit diff
path: root/compiler/rustc_codegen_llvm/src/llvm/ffi.rs
diff options
context:
space:
mode:
authorZalathar <Zalathar@users.noreply.github.com>2024-12-12 20:54:33 +1100
committerZalathar <Zalathar@users.noreply.github.com>2024-12-12 20:54:33 +1100
commitf7c6a2cf11eb075ea56b54c48756ee55d0b2aeb1 (patch)
treef1789e082eaada769880e839e72a2cf34e3f4698 /compiler/rustc_codegen_llvm/src/llvm/ffi.rs
parent903d2976fdb6ceeb65526b7555d8d1e6f8c02134 (diff)
downloadrust-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.rs4
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;