diff options
| author | Scott McMurray <scottmcm@users.noreply.github.com> | 2024-08-01 21:58:34 -0700 |
|---|---|---|
| committer | Scott McMurray <scottmcm@users.noreply.github.com> | 2024-08-01 21:58:34 -0700 |
| commit | 77ca30f1950a062e9eb1caeff790618488058057 (patch) | |
| tree | e5115e6c568f80d6d3afcc53b912c148ad188035 /tests/codegen/iter-repeat-n-trivial-drop.rs | |
| parent | 425ae69588182ae140bc3392bab53391f72d91a9 (diff) | |
| download | rust-77ca30f1950a062e9eb1caeff790618488058057.tar.gz rust-77ca30f1950a062e9eb1caeff790618488058057.zip | |
Implement `UncheckedIterator` directly for `RepeatN`
Diffstat (limited to 'tests/codegen/iter-repeat-n-trivial-drop.rs')
| -rw-r--r-- | tests/codegen/iter-repeat-n-trivial-drop.rs | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/tests/codegen/iter-repeat-n-trivial-drop.rs b/tests/codegen/iter-repeat-n-trivial-drop.rs index 31020b77984..7de224b92d8 100644 --- a/tests/codegen/iter-repeat-n-trivial-drop.rs +++ b/tests/codegen/iter-repeat-n-trivial-drop.rs @@ -1,8 +1,9 @@ -//@ compile-flags: -O +//@ compile-flags: -C opt-level=3 //@ only-x86_64 #![crate_type = "lib"] #![feature(iter_repeat_n)] +#![feature(array_repeat)] #[derive(Clone)] pub struct NotCopy(u16); @@ -54,3 +55,15 @@ pub fn vec_extend_via_iter_repeat_n() -> Vec<u8> { v.extend(std::iter::repeat_n(42_u8, n)); v } + +// Array repeat uses `RepeatN::next_unchecked` internally, +// so also check that the distinction disappears there. + +#[no_mangle] +// CHECK-LABEL: @array_repeat_not_copy +pub unsafe fn array_repeat_not_copy(item: NotCopy) -> [NotCopy; 8] { + // CHECK: insertelement {{.+}} i16 %item + // CHECK: shufflevector <8 x i16> {{.+}} zeroinitializer + // CHECK: store <8 x i16> + std::array::repeat(item) +} |
