diff options
| author | Nikita Popov <npopov@redhat.com> | 2024-06-11 10:13:07 +0200 |
|---|---|---|
| committer | Nikita Popov <npopov@redhat.com> | 2024-06-11 16:07:14 +0200 |
| commit | 26fa5c2c300f3c3a3ee3109c009bd4a6803a2a4c (patch) | |
| tree | 573d38df6836169941a344eac18a59fe492bc834 | |
| parent | aec67e238d366c4c41373b272f19dd79ff5ec0f0 (diff) | |
| download | rust-26fa5c2c300f3c3a3ee3109c009bd4a6803a2a4c.tar.gz rust-26fa5c2c300f3c3a3ee3109c009bd4a6803a2a4c.zip | |
Make issue-122805.rs big endian compatible
Instead of not generating the function at all on big endian (which makes the CHECK lines fail), instead use to_le() on big endian, so that we essentially perform a bswap for both endiannesses.
| -rw-r--r-- | tests/codegen/issues/issue-122805.rs | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/tests/codegen/issues/issue-122805.rs b/tests/codegen/issues/issue-122805.rs index 6d108ada6dd..8e03c6c8884 100644 --- a/tests/codegen/issues/issue-122805.rs +++ b/tests/codegen/issues/issue-122805.rs @@ -39,17 +39,20 @@ // OPT3WINX64-NEXT: store <8 x i16> // CHECK-NEXT: ret void #[no_mangle] -#[cfg(target_endian = "little")] pub fn convert(value: [u16; 8]) -> [u8; 16] { + #[cfg(target_endian = "little")] + let bswap = u16::to_be; + #[cfg(target_endian = "big")] + let bswap = u16::to_le; let addr16 = [ - value[0].to_be(), - value[1].to_be(), - value[2].to_be(), - value[3].to_be(), - value[4].to_be(), - value[5].to_be(), - value[6].to_be(), - value[7].to_be(), + bswap(value[0]), + bswap(value[1]), + bswap(value[2]), + bswap(value[3]), + bswap(value[4]), + bswap(value[5]), + bswap(value[6]), + bswap(value[7]), ]; unsafe { core::mem::transmute::<_, [u8; 16]>(addr16) } } |
