diff options
| author | Lzu Tao <taolzu@gmail.com> | 2024-05-20 21:50:31 +0000 |
|---|---|---|
| committer | Lzu Tao <taolzu@gmail.com> | 2024-06-09 07:35:24 +0000 |
| commit | 95740fbfeddbc3e09a0a94cde4c3694cd5af17db (patch) | |
| tree | 745566930eb5315d1b3d125ffccf06dd6fe8657b | |
| parent | 5f527eb562ff670cf9545817575ff6a7f6088bc7 (diff) | |
| download | rust-95740fbfeddbc3e09a0a94cde4c3694cd5af17db.tar.gz rust-95740fbfeddbc3e09a0a94cde4c3694cd5af17db.zip | |
add codegen test for #36010
| -rw-r--r-- | tests/codegen/issues/issue-36010-some-box-is_some.rs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/tests/codegen/issues/issue-36010-some-box-is_some.rs b/tests/codegen/issues/issue-36010-some-box-is_some.rs new file mode 100644 index 00000000000..b7179987e7d --- /dev/null +++ b/tests/codegen/issues/issue-36010-some-box-is_some.rs @@ -0,0 +1,29 @@ +#![crate_type = "lib"] + +//@ compile-flags: -O + +use std::mem; + +fn foo<T>(a: &mut T, b: T) -> bool { + let b = Some(mem::replace(a, b)); + let ret = b.is_some(); + mem::forget(b); + return ret +} + +// CHECK-LABEL: @foo_u32 +// CHECK: store i32 +// CHECK-NEXT: ret i1 +#[no_mangle] +pub fn foo_u32(a: &mut u32, b: u32) -> bool { + foo(a, b) +} + +// CHECK-LABEL: @foo_box +// CHECK: store ptr +// CHECK-NEXT: ret i1 +#[no_mangle] +pub fn foo_box(a: &mut Box<u32>, b: Box<u32>) -> bool { + foo(a, b) +} + |
