From f6420f200e88d3540549bcbff7cb1335b96b520f Mon Sep 17 00:00:00 2001 From: Lzu Tao Date: Mon, 20 May 2024 21:50:31 +0000 Subject: [PATCH] add codegen test for #36010 --- .../issues/issue-36010-some-box-is_some.rs | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 tests/codegen/issues/issue-36010-some-box-is_some.rs 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 0000000000000..b7179987e7d01 --- /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(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, b: Box) -> bool { + foo(a, b) +} +