about summary refs log tree commit diff
path: root/tests/codegen/slice-init.rs
diff options
context:
space:
mode:
authorMichael Goulet <michael@errs.io>2025-03-02 18:52:33 +0000
committerMichael Goulet <michael@errs.io>2025-03-02 18:53:49 +0000
commit5f575bc4bca3f18e4798110b05e059a840c0fd49 (patch)
tree3d0ed137b2f55fd769e7cac5798b8c2e7f607275 /tests/codegen/slice-init.rs
parenta59a8f9e7579b4346eb6b00c3809d04986dcfcee (diff)
downloadrust-5f575bc4bca3f18e4798110b05e059a840c0fd49.tar.gz
rust-5f575bc4bca3f18e4798110b05e059a840c0fd49.zip
Add a test
Diffstat (limited to 'tests/codegen/slice-init.rs')
-rw-r--r--tests/codegen/slice-init.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/tests/codegen/slice-init.rs b/tests/codegen/slice-init.rs
index 1c2dd3e8875..950e0b0c10d 100644
--- a/tests/codegen/slice-init.rs
+++ b/tests/codegen/slice-init.rs
@@ -89,6 +89,20 @@ pub fn option_none_init() -> [Option<u8>; N] {
     [None; N]
 }
 
+use std::mem::MaybeUninit;
+
+// FIXME: This could be optimized into a memset.
+// Regression test for <https://github.com/rust-lang/rust/issues/137892>.
+#[no_mangle]
+pub fn half_uninit() -> [(u128, MaybeUninit<u128>); N] {
+    // CHECK-NOT: select
+    // CHECK: br label %repeat_loop_header{{.*}}
+    // CHECK-NOT: switch
+    // CHECK: icmp
+    // CHECK-NOT: call void @llvm.memset.p0
+    [const { (0, MaybeUninit::uninit()) }; N]
+}
+
 // Use an opaque function to prevent rustc from removing useless drops.
 #[inline(never)]
 pub fn opaque(_: impl Sized) {}