Auto merge of #123555 - DianQK:update-llvm-18, r=cuviper
Update to LLVM 18.1.3 Fixes #122805. This should work on all targets: https://rust.godbolt.org/z/svW8ha31z. r? `@cuviper`
This commit is contained in:
commit
0e3235f85b
@ -1 +1 @@
|
||||
Subproject commit 0af6c732ec6ca189cd7725e4a7d4290793046e83
|
||||
Subproject commit af8f9eb61a2ad4ee1f2d3f46d157b93a47c6a4bf
|
35
tests/codegen/issues/issue-122805.rs
Normal file
35
tests/codegen/issues/issue-122805.rs
Normal file
@ -0,0 +1,35 @@
|
||||
//@ compile-flags: -O
|
||||
//@ min-llvm-version: 18.1.3
|
||||
|
||||
#![crate_type = "lib"]
|
||||
#![no_std]
|
||||
|
||||
// The code is from https://github.com/rust-lang/rust/issues/122805.
|
||||
// Ensure we do not generate the shufflevector instruction
|
||||
// to avoid complicating the code.
|
||||
// CHECK-LABEL: define{{.*}}void @convert(
|
||||
// CHECK-NOT: shufflevector
|
||||
// CHECK: insertelement <8 x i16>
|
||||
// CHECK-NEXT: insertelement <8 x i16>
|
||||
// CHECK-NEXT: insertelement <8 x i16>
|
||||
// CHECK-NEXT: insertelement <8 x i16>
|
||||
// CHECK-NEXT: insertelement <8 x i16>
|
||||
// CHECK-NEXT: insertelement <8 x i16>
|
||||
// CHECK-NEXT: insertelement <8 x i16>
|
||||
// CHECK-NEXT: insertelement <8 x i16>
|
||||
// CHECK-NEXT: store <8 x i16>
|
||||
// CHECK-NEXT: ret void
|
||||
#[no_mangle]
|
||||
pub fn convert(value: [u16; 8]) -> [u8; 16] {
|
||||
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(),
|
||||
];
|
||||
unsafe { core::mem::transmute::<_, [u8; 16]>(addr16) }
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user