summaryrefslogtreecommitdiffstats
path: root/tests/codegen/issues/issue-111603.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-18 02:49:50 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-18 02:49:50 +0000
commit9835e2ae736235810b4ea1c162ca5e65c547e770 (patch)
tree3fcebf40ed70e581d776a8a4c65923e8ec20e026 /tests/codegen/issues/issue-111603.rs
parentReleasing progress-linux version 1.70.0+dfsg2-1~progress7.99u1. (diff)
downloadrustc-9835e2ae736235810b4ea1c162ca5e65c547e770.tar.xz
rustc-9835e2ae736235810b4ea1c162ca5e65c547e770.zip
Merging upstream version 1.71.1+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tests/codegen/issues/issue-111603.rs')
-rw-r--r--tests/codegen/issues/issue-111603.rs28
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/codegen/issues/issue-111603.rs b/tests/codegen/issues/issue-111603.rs
new file mode 100644
index 000000000..90b3c314d
--- /dev/null
+++ b/tests/codegen/issues/issue-111603.rs
@@ -0,0 +1,28 @@
+// compile-flags: -O
+
+#![crate_type = "lib"]
+#![feature(get_mut_unchecked, new_uninit)]
+
+use std::sync::Arc;
+
+// CHECK-LABEL: @new_uninit
+#[no_mangle]
+pub fn new_uninit(x: u64) -> Arc<[u64; 1000]> {
+ // CHECK: call alloc::sync::arcinner_layout_for_value_layout
+ // CHECK-NOT: call alloc::sync::arcinner_layout_for_value_layout
+ let mut arc = Arc::new_uninit();
+ unsafe { Arc::get_mut_unchecked(&mut arc) }.write([x; 1000]);
+ unsafe { arc.assume_init() }
+}
+
+// CHECK-LABEL: @new_uninit_slice
+#[no_mangle]
+pub fn new_uninit_slice(x: u64) -> Arc<[u64]> {
+ // CHECK: call alloc::sync::arcinner_layout_for_value_layout
+ // CHECK-NOT: call alloc::sync::arcinner_layout_for_value_layout
+ let mut arc = Arc::new_uninit_slice(1000);
+ for elem in unsafe { Arc::get_mut_unchecked(&mut arc) } {
+ elem.write(x);
+ }
+ unsafe { arc.assume_init() }
+}