extern "C" fn
on mips64 targets does not respect repr(transparent) #115404
Open
Description
opened on Aug 31, 2023
This is the MIPS version of #115336: on the target mips64-unknown-linux-gnuabi64
, all arrays and some tuple types like (i32, f32, i64, f64)
have a different ABI when being wrapped in repr(transparent)
wrappers, and hence this fails the test I added in #115372.
For instance for [u8; 2]
, the PassMode
becomes
mode: Indirect {
attrs: ArgAttributes {
regular: NoAlias | NoCapture | NonNull | NoUndef,
arg_ext: None,
pointee_size: Size(2 bytes),
pointee_align: Some(
Align(1 bytes),
),
},
extra_attrs: None,
on_stack: false,
},
But for Wrapper<[u8; 2]>
it becomes
mode: Cast(
CastTarget {
prefix: [
None,
None,
None,
None,
None,
None,
None,
None,
],
rest: Uniform {
unit: Reg {
kind: Integer,
size: Size(8 bytes),
},
total: Size(2 bytes),
},
attrs: ArgAttributes {
regular: (empty),
arg_ext: None,
pointee_size: Size(0 bytes),
pointee_align: None,
},
},
false,
),
This also affects mips64el-unknown-linux-gnuabi64, mips64-openwrt-linux-musl, mips64-unknown-linux-muslabi64, mips64el-unknown-linux-muslabi64
Cc @Itus-Shield (listed as maintainer for the openwrt target)
Activity