mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 14:55:26 +00:00
Auto merge of #115050 - khei4:khei4/codegen-move-before-nocapture, r=nikic
add codegen test for the move before passing to nocapture, by shared-ref arg This PR adds codegen test for https://github.com/rust-lang/rust/issues/107436#issuecomment-1685792517 (It seems like this works from llvm-16?) Fixes #107436
This commit is contained in:
commit
9f48a85447
22
tests/codegen/move-before-nocapture-ref-arg.rs
Normal file
22
tests/codegen/move-before-nocapture-ref-arg.rs
Normal file
@ -0,0 +1,22 @@
|
||||
// Verify that move before the call of the function with noalias, nocapture, readonly.
|
||||
// #107436
|
||||
// compile-flags: -O
|
||||
// min-llvm-version: 17
|
||||
|
||||
#![crate_type = "lib"]
|
||||
|
||||
#[repr(C)]
|
||||
pub struct ThreeSlices<'a>(&'a [u32], &'a [u32], &'a [u32]);
|
||||
|
||||
#[no_mangle]
|
||||
pub fn sum_slices(val: ThreeSlices) -> u32 {
|
||||
// CHECK-NOT: memcpy
|
||||
let val = val;
|
||||
sum(&val)
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
#[inline(never)]
|
||||
pub fn sum(val: &ThreeSlices) -> u32 {
|
||||
val.0.iter().sum::<u32>() + val.1.iter().sum::<u32>() + val.2.iter().sum::<u32>()
|
||||
}
|
Loading…
Reference in New Issue
Block a user