librustc_codegen_llvm: Use repr(transparent) for bitflags over repr(C) (#61306)

In order to make sure that Rust's bitflags types are passed the same
way in the Rust ABI as they are in the C ABI, we need to use the attribute
repr(transparent) over the repr(C) attribute for the single-field bitflags
structs in in order to prevent ABI mismatches. Thanks to Michael Karcher
for finding this bug.
This commit is contained in:
John Paul Adrian Glaubitz 2019-06-16 02:53:33 +02:00
parent 0dc9e9c10c
commit 3fa7411050

View file

@ -564,7 +564,7 @@ pub mod debuginfo {
// These values **must** match with LLVMRustDIFlags!!
bitflags! {
#[repr(C)]
#[repr(transparent)]
#[derive(Default)]
pub struct DIFlags: ::libc::uint32_t {
const FlagZero = 0;
@ -593,7 +593,7 @@ pub mod debuginfo {
// These values **must** match with LLVMRustDISPFlags!!
bitflags! {
#[repr(C)]
#[repr(transparent)]
#[derive(Default)]
pub struct DISPFlags: ::libc::uint32_t {
const SPFlagZero = 0;