diff options
Diffstat (limited to 'tests/codegen-llvm/lib-optimizations/iter-sum.rs')
| -rw-r--r-- | tests/codegen-llvm/lib-optimizations/iter-sum.rs | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/tests/codegen-llvm/lib-optimizations/iter-sum.rs b/tests/codegen-llvm/lib-optimizations/iter-sum.rs new file mode 100644 index 00000000000..a054ffffe74 --- /dev/null +++ b/tests/codegen-llvm/lib-optimizations/iter-sum.rs @@ -0,0 +1,13 @@ +//@ compile-flags: -Copt-level=3 +//@ only-x86_64 (vectorization varies between architectures) +#![crate_type = "lib"] + +// Ensure that slice + take + sum gets vectorized. +// Currently this relies on the slice::Iter::try_fold implementation +// CHECK-LABEL: @slice_take_sum +#[no_mangle] +pub fn slice_take_sum(s: &[u64], l: usize) -> u64 { + // CHECK: vector.body: + // CHECK: ret + s.iter().take(l).sum() +} |
