diff options
| author | Camille GILLOT <gillot.camille@gmail.com> | 2023-02-26 13:42:28 +0000 |
|---|---|---|
| committer | Camille GILLOT <gillot.camille@gmail.com> | 2024-02-09 21:13:53 +0000 |
| commit | 014b29eecfbe79e4a6ca6d845907ebebeee53f1d (patch) | |
| tree | c51abcf70cb692d9fed244978d8816dfe3d84774 /tests/mir-opt/separate_const_switch.too_complex.JumpThreading.diff | |
| parent | e132cac3c45217f5f2b730ddd684fdd4700ffc4c (diff) | |
| download | rust-014b29eecfbe79e4a6ca6d845907ebebeee53f1d.tar.gz rust-014b29eecfbe79e4a6ca6d845907ebebeee53f1d.zip | |
Remove ConstGoto and SeparateConstSwitch.
Diffstat (limited to 'tests/mir-opt/separate_const_switch.too_complex.JumpThreading.diff')
| -rw-r--r-- | tests/mir-opt/separate_const_switch.too_complex.JumpThreading.diff | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/tests/mir-opt/separate_const_switch.too_complex.JumpThreading.diff b/tests/mir-opt/separate_const_switch.too_complex.JumpThreading.diff new file mode 100644 index 00000000000..1ac527e9338 --- /dev/null +++ b/tests/mir-opt/separate_const_switch.too_complex.JumpThreading.diff @@ -0,0 +1,84 @@ +- // MIR for `too_complex` before JumpThreading ++ // MIR for `too_complex` after JumpThreading + + fn too_complex(_1: Result<i32, usize>) -> Option<i32> { + debug x => _1; + let mut _0: std::option::Option<i32>; + let mut _2: std::ops::ControlFlow<usize, i32>; + let mut _3: isize; + let _4: i32; + let _5: usize; + let mut _6: isize; + let _7: i32; + let _8: usize; + scope 1 { + debug v => _4; + } + scope 2 { + debug r => _5; + } + scope 3 { + debug v => _7; + } + scope 4 { + debug r => _8; + } + + bb0: { + StorageLive(_2); + _3 = discriminant(_1); + switchInt(move _3) -> [0: bb2, 1: bb1, otherwise: bb7]; + } + + bb1: { + _5 = ((_1 as Err).0: usize); + _2 = ControlFlow::<usize, i32>::Break(_5); +- goto -> bb3; ++ goto -> bb8; + } + + bb2: { + _4 = ((_1 as Ok).0: i32); + _2 = ControlFlow::<usize, i32>::Continue(_4); + goto -> bb3; + } + + bb3: { + _6 = discriminant(_2); +- switchInt(move _6) -> [0: bb5, 1: bb4, otherwise: bb7]; ++ goto -> bb5; + } + + bb4: { + StorageLive(_8); + _8 = ((_2 as Break).0: usize); + _0 = const Option::<i32>::None; + StorageDead(_8); + goto -> bb6; + } + + bb5: { + _7 = ((_2 as Continue).0: i32); + _0 = Option::<i32>::Some(_7); + goto -> bb6; + } + + bb6: { + StorageDead(_2); + return; + } + + bb7: { + unreachable; ++ } ++ ++ bb8: { ++ _6 = discriminant(_2); ++ goto -> bb4; + } + } + + ALLOC0 (size: 8, align: 4) { + 00 00 00 00 __ __ __ __ │ ....░░░░ + } + |
