diff options
| author | dianqk <dianqk@dianqk.net> | 2025-05-24 19:43:26 +0800 |
|---|---|---|
| committer | dianqk <dianqk@dianqk.net> | 2025-05-26 18:15:54 +0800 |
| commit | 457f8ba447a2f2d3fc20ad2b0d779d49c9883485 (patch) | |
| tree | 90d89557fdf08878f2eec972240b631fcba02ab3 /tests | |
| parent | 80c34983c63968c204096e79b9126c0039790741 (diff) | |
| download | rust-457f8ba447a2f2d3fc20ad2b0d779d49c9883485.tar.gz rust-457f8ba447a2f2d3fc20ad2b0d779d49c9883485.zip | |
mir-opt: Do not transform non-int type in match_branches
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/mir-opt/matches_reduce_branches.match_non_int_failed.MatchBranchSimplification.diff | 29 | ||||
| -rw-r--r-- | tests/mir-opt/matches_reduce_branches.rs | 32 |
2 files changed, 61 insertions, 0 deletions
diff --git a/tests/mir-opt/matches_reduce_branches.match_non_int_failed.MatchBranchSimplification.diff b/tests/mir-opt/matches_reduce_branches.match_non_int_failed.MatchBranchSimplification.diff new file mode 100644 index 00000000000..81e900a34c0 --- /dev/null +++ b/tests/mir-opt/matches_reduce_branches.match_non_int_failed.MatchBranchSimplification.diff @@ -0,0 +1,29 @@ +- // MIR for `match_non_int_failed` before MatchBranchSimplification ++ // MIR for `match_non_int_failed` after MatchBranchSimplification + + fn match_non_int_failed(_1: char) -> u8 { + let mut _0: u8; + + bb0: { + switchInt(copy _1) -> [97: bb1, 98: bb2, otherwise: bb3]; + } + + bb1: { + _0 = const 97_u8; + goto -> bb4; + } + + bb2: { + _0 = const 98_u8; + goto -> bb4; + } + + bb3: { + unreachable; + } + + bb4: { + return; + } + } + diff --git a/tests/mir-opt/matches_reduce_branches.rs b/tests/mir-opt/matches_reduce_branches.rs index 3372ae2f2a6..19611a843c6 100644 --- a/tests/mir-opt/matches_reduce_branches.rs +++ b/tests/mir-opt/matches_reduce_branches.rs @@ -628,6 +628,37 @@ fn match_i128_u128(i: EnumAi128) -> u128 { } } +// EMIT_MIR matches_reduce_branches.match_non_int_failed.MatchBranchSimplification.diff +#[custom_mir(dialect = "runtime")] +fn match_non_int_failed(i: char) -> u8 { + // CHECK-LABEL: fn match_non_int_failed( + // CHECK: switchInt + // CHECK: return + mir! { + { + match i { + 'a' => bb1, + 'b' => bb2, + _ => unreachable_bb, + } + } + bb1 = { + RET = 97; + Goto(ret) + } + bb2 = { + RET = 98; + Goto(ret) + } + unreachable_bb = { + Unreachable() + } + ret = { + Return() + } + } +} + fn main() { let _ = foo(None); let _ = foo(Some(())); @@ -665,4 +696,5 @@ fn main() { let _ = match_i128_u128(EnumAi128::A); let _ = my_is_some(None); + let _ = match_non_int_failed('a'); } |
