about summary refs log tree commit diff
path: root/tests/codegen/enum
diff options
context:
space:
mode:
authorDianQK <dianqk@dianqk.net>2024-08-21 21:45:47 +0800
committerDianQK <dianqk@dianqk.net>2024-09-14 13:30:35 +0800
commitc16c22cc9c4daf4485c78e789c6e2a4bedea83b4 (patch)
tree691c48b1fb95ed794a49307cb4b170fdea237f0f /tests/codegen/enum
parent23b04c0513472f3728ad482398008e077979e5c4 (diff)
downloadrust-c16c22cc9c4daf4485c78e789c6e2a4bedea83b4.tar.gz
rust-c16c22cc9c4daf4485c78e789c6e2a4bedea83b4.zip
Simplify the canonical clone method to copy
The optimized clone method ends up as the following MIR:

```
_2 = copy ((*_1).0: i32);
_3 = copy ((*_1).1: u64);
_4 = copy ((*_1).2: [i8; 3]);
_0 = Foo { a: move _2, b: move _3, c: move _4 };
```

We can transform this to:

```
_0 = copy (*_1);
```
Diffstat (limited to 'tests/codegen/enum')
-rw-r--r--tests/codegen/enum/unreachable_enum_default_branch.rs6
1 files changed, 4 insertions, 2 deletions
diff --git a/tests/codegen/enum/unreachable_enum_default_branch.rs b/tests/codegen/enum/unreachable_enum_default_branch.rs
index 81a258f2722..76a92496c07 100644
--- a/tests/codegen/enum/unreachable_enum_default_branch.rs
+++ b/tests/codegen/enum/unreachable_enum_default_branch.rs
@@ -28,11 +28,13 @@ pub fn implicit_match(x: Int) -> bool {
 // The code is from https://github.com/rust-lang/rust/issues/110097.
 // We expect it to generate the same optimized code as a full match.
 // CHECK-LABEL: @if_let(
-// CHECK-NEXT:  start:
+// CHECK: start:
+// CHECK-NOT: zext
+// CHECK: select
 // CHECK-NEXT: insertvalue
 // CHECK-NEXT: insertvalue
 // CHECK-NEXT: ret
 #[no_mangle]
 pub fn if_let(val: Result<i32, ()>) -> Result<i32, ()> {
-    if let Ok(x) = val { Ok(x) } else { Err(()) }
+    if let Ok(x) = val { Ok(x * 2) } else { Err(()) }
 }