about summary refs log tree commit diff
path: root/tests/mir-opt/separate_const_switch.too_complex.JumpThreading.diff
diff options
context:
space:
mode:
authorCamille GILLOT <gillot.camille@gmail.com>2023-02-26 13:42:28 +0000
committerCamille GILLOT <gillot.camille@gmail.com>2024-02-09 21:13:53 +0000
commit014b29eecfbe79e4a6ca6d845907ebebeee53f1d (patch)
treec51abcf70cb692d9fed244978d8816dfe3d84774 /tests/mir-opt/separate_const_switch.too_complex.JumpThreading.diff
parente132cac3c45217f5f2b730ddd684fdd4700ffc4c (diff)
downloadrust-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.diff84
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 __ __ __ __                         │ ....░░░░
+  }
+