// Verify that move before the call of the function with noalias, nocapture, readonly. | |
// #107436 | |
//@ compile-flags: -O | |
#![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>() | |
} |