Skip to content

Instantly share code, notes, and snippets.

@wesleywiser
Created September 11, 2019 12:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wesleywiser/46759330b21aac1347641dc0322561ce to your computer and use it in GitHub Desktop.
Save wesleywiser/46759330b21aac1347641dc0322561ce to your computer and use it in GitHub Desktop.
generator_before_const_prop.mir
// MIR for `main`
// source = MirSource { instance: Item(DefId(0:19 ~ control_flow[317d]::main[0])), promoted: None }
// pass_name = ConstProp
// disambiguator = before
fn main() -> () {
let mut _0: (); // return place in scope 0 at src/test/ui/generator/control-flow.rs:24:11: 24:11
let _1: (); // in scope 0 at src/test/ui/generator/control-flow.rs:25:5: 25:24
let mut _2: [generator@src/test/ui/generator/control-flow.rs:25:15: 25:23 {()}]; // in scope 0 at src/test/ui/generator/control-flow.rs:25:15: 25:23
let _3: (); // in scope 0 at src/test/ui/generator/control-flow.rs:26:5: 30:7
let mut _4: [generator@src/test/ui/generator/control-flow.rs:26:15: 30:6 {fn(std::ops::Range<i32>) -> <std::ops::Range<i32> as std::iter::IntoIterator>::IntoIter {<std::ops::Range<i32> as std::iter::IntoIterator>::into_iter}, i32, std::ops::Range<i32>, ()}]; // in scope 0 at src/test/ui/generator/control-flow.rs:26:15: 30:6
let _5: (); // in scope 0 at src/test/ui/generator/control-flow.rs:31:5: 36:7
let mut _6: [generator@src/test/ui/generator/control-flow.rs:31:15: 36:6 {bool, ()}]; // in scope 0 at src/test/ui/generator/control-flow.rs:31:15: 36:6
let _7: (); // in scope 0 at src/test/ui/generator/control-flow.rs:37:5: 42:7
let mut _8: [generator@src/test/ui/generator/control-flow.rs:37:15: 42:6 {bool, ()}]; // in scope 0 at src/test/ui/generator/control-flow.rs:37:15: 42:6
let _9: (); // in scope 0 at src/test/ui/generator/control-flow.rs:43:5: 49:7
let mut _10: [generator@src/test/ui/generator/control-flow.rs:43:15: 49:6 {(), bool}]; // in scope 0 at src/test/ui/generator/control-flow.rs:43:15: 49:6
bb0: {
StorageLive(_1); // bb0[0]: scope 0 at src/test/ui/generator/control-flow.rs:25:5: 25:24
StorageLive(_2); // bb0[1]: scope 0 at src/test/ui/generator/control-flow.rs:25:15: 25:23
_2 = [generator@src/test/ui/generator/control-flow.rs:25:15: 25:23]; // bb0[2]: scope 0 at src/test/ui/generator/control-flow.rs:25:15: 25:23
// generator
// + def_id: DefId(0:20 ~ control_flow[317d]::main[0]::{{closure}}[0])
// + substs: GeneratorSubsts {
// substs: [
// (),
// (),
// {()},
// ],
// }
// + movability: Movable
_1 = const finish::<[generator@src/test/ui/generator/control-flow.rs:25:15: 25:23 {()}]>(const 1usize, move _2) -> [return: bb2, unwind: bb1]; // bb0[3]: scope 0 at src/test/ui/generator/control-flow.rs:25:5: 25:24
// ty::Const
// + ty: fn(usize, [generator@src/test/ui/generator/control-flow.rs:25:15: 25:23 {()}]) -> <[generator@src/test/ui/generator/control-flow.rs:25:15: 25:23 {()}] as std::ops::Generator>::Return {finish::<[generator@src/test/ui/generator/control-flow.rs:25:15: 25:23 {()}]>}
// + val: Scalar(<ZST>)
// mir::Constant
// + span: src/test/ui/generator/control-flow.rs:25:5: 25:11
// + literal: Const { ty: fn(usize, [generator@src/test/ui/generator/control-flow.rs:25:15: 25:23 {()}]) -> <[generator@src/test/ui/generator/control-flow.rs:25:15: 25:23 {()}] as std::ops::Generator>::Return {finish::<[generator@src/test/ui/generator/control-flow.rs:25:15: 25:23 {()}]>}, val: Scalar(<ZST>) }
// ty::Const
// + ty: usize
// + val: Scalar(0x0000000000000001)
// mir::Constant
// + span: src/test/ui/generator/control-flow.rs:25:12: 25:13
// + literal: Const { ty: usize, val: Scalar(0x0000000000000001) }
}
bb1 (cleanup): {
resume; // bb1[0]: scope 0 at src/test/ui/generator/control-flow.rs:24:1: 50:2
}
bb2: {
StorageDead(_2); // bb2[0]: scope 0 at src/test/ui/generator/control-flow.rs:25:23: 25:24
StorageDead(_1); // bb2[1]: scope 0 at src/test/ui/generator/control-flow.rs:25:24: 25:25
StorageLive(_3); // bb2[2]: scope 0 at src/test/ui/generator/control-flow.rs:26:5: 30:7
StorageLive(_4); // bb2[3]: scope 0 at src/test/ui/generator/control-flow.rs:26:15: 30:6
_4 = [generator@src/test/ui/generator/control-flow.rs:26:15: 30:6]; // bb2[4]: scope 0 at src/test/ui/generator/control-flow.rs:26:15: 30:6
// generator
// + def_id: DefId(0:21 ~ control_flow[317d]::main[0]::{{closure}}[1])
// + substs: GeneratorSubsts {
// substs: [
// (),
// (),
// {fn(std::ops::Range<i32>) -> <std::ops::Range<i32> as std::iter::IntoIterator>::IntoIter {<std::ops::Range<i32> as std::iter::IntoIterator>::into_iter}, i32, std::ops::Range<i32>, ()},
// ],
// }
// + movability: Movable
_3 = const finish::<[generator@src/test/ui/generator/control-flow.rs:26:15: 30:6 {fn(std::ops::Range<i32>) -> <std::ops::Range<i32> as std::iter::IntoIterator>::IntoIter {<std::ops::Range<i32> as std::iter::IntoIterator>::into_iter}, i32, std::ops::Range<i32>, ()}]>(const 8usize, move _4) -> [return: bb3, unwind: bb1]; // bb2[5]: scope 0 at src/test/ui/generator/control-flow.rs:26:5: 30:7
// ty::Const
// + ty: fn(usize, [generator@src/test/ui/generator/control-flow.rs:26:15: 30:6 {fn(std::ops::Range<i32>) -> <std::ops::Range<i32> as std::iter::IntoIterator>::IntoIter {<std::ops::Range<i32> as std::iter::IntoIterator>::into_iter}, i32, std::ops::Range<i32>, ()}]) -> <[generator@src/test/ui/generator/control-flow.rs:26:15: 30:6 {fn(std::ops::Range<i32>) -> <std::ops::Range<i32> as std::iter::IntoIterator>::IntoIter {<std::ops::Range<i32> as std::iter::IntoIterator>::into_iter}, i32, std::ops::Range<i32>, ()}] as std::ops::Generator>::Return {finish::<[generator@src/test/ui/generator/control-flow.rs:26:15: 30:6 {fn(std::ops::Range<i32>) -> <std::ops::Range<i32> as std::iter::IntoIterator>::IntoIter {<std::ops::Range<i32> as std::iter::IntoIterator>::into_iter}, i32, std::ops::Range<i32>, ()}]>}
// + val: Scalar(<ZST>)
// mir::Constant
// + span: src/test/ui/generator/control-flow.rs:26:5: 26:11
// + literal: Const { ty: fn(usize, [generator@src/test/ui/generator/control-flow.rs:26:15: 30:6 {fn(std::ops::Range<i32>) -> <std::ops::Range<i32> as std::iter::IntoIterator>::IntoIter {<std::ops::Range<i32> as std::iter::IntoIterator>::into_iter}, i32, std::ops::Range<i32>, ()}]) -> <[generator@src/test/ui/generator/control-flow.rs:26:15: 30:6 {fn(std::ops::Range<i32>) -> <std::ops::Range<i32> as std::iter::IntoIterator>::IntoIter {<std::ops::Range<i32> as std::iter::IntoIterator>::into_iter}, i32, std::ops::Range<i32>, ()}] as std::ops::Generator>::Return {finish::<[generator@src/test/ui/generator/control-flow.rs:26:15: 30:6 {fn(std::ops::Range<i32>) -> <std::ops::Range<i32> as std::iter::IntoIterator>::IntoIter {<std::ops::Range<i32> as std::iter::IntoIterator>::into_iter}, i32, std::ops::Range<i32>, ()}]>}, val: Scalar(<ZST>) }
// ty::Const
// + ty: usize
// + val: Scalar(0x0000000000000008)
// mir::Constant
// + span: src/test/ui/generator/control-flow.rs:26:12: 26:13
// + literal: Const { ty: usize, val: Scalar(0x0000000000000008) }
}
bb3: {
StorageDead(_4); // bb3[0]: scope 0 at src/test/ui/generator/control-flow.rs:30:6: 30:7
StorageDead(_3); // bb3[1]: scope 0 at src/test/ui/generator/control-flow.rs:30:7: 30:8
StorageLive(_5); // bb3[2]: scope 0 at src/test/ui/generator/control-flow.rs:31:5: 36:7
StorageLive(_6); // bb3[3]: scope 0 at src/test/ui/generator/control-flow.rs:31:15: 36:6
_6 = [generator@src/test/ui/generator/control-flow.rs:31:15: 36:6]; // bb3[4]: scope 0 at src/test/ui/generator/control-flow.rs:31:15: 36:6
// generator
// + def_id: DefId(0:22 ~ control_flow[317d]::main[0]::{{closure}}[2])
// + substs: GeneratorSubsts {
// substs: [
// (),
// (),
// {bool, ()},
// ],
// }
// + movability: Movable
_5 = const finish::<[generator@src/test/ui/generator/control-flow.rs:31:15: 36:6 {bool, ()}]>(const 1usize, move _6) -> [return: bb4, unwind: bb1]; // bb3[5]: scope 0 at src/test/ui/generator/control-flow.rs:31:5: 36:7
// ty::Const
// + ty: fn(usize, [generator@src/test/ui/generator/control-flow.rs:31:15: 36:6 {bool, ()}]) -> <[generator@src/test/ui/generator/control-flow.rs:31:15: 36:6 {bool, ()}] as std::ops::Generator>::Return {finish::<[generator@src/test/ui/generator/control-flow.rs:31:15: 36:6 {bool, ()}]>}
// + val: Scalar(<ZST>)
// mir::Constant
// + span: src/test/ui/generator/control-flow.rs:31:5: 31:11
// + literal: Const { ty: fn(usize, [generator@src/test/ui/generator/control-flow.rs:31:15: 36:6 {bool, ()}]) -> <[generator@src/test/ui/generator/control-flow.rs:31:15: 36:6 {bool, ()}] as std::ops::Generator>::Return {finish::<[generator@src/test/ui/generator/control-flow.rs:31:15: 36:6 {bool, ()}]>}, val: Scalar(<ZST>) }
// ty::Const
// + ty: usize
// + val: Scalar(0x0000000000000001)
// mir::Constant
// + span: src/test/ui/generator/control-flow.rs:31:12: 31:13
// + literal: Const { ty: usize, val: Scalar(0x0000000000000001) }
}
bb4: {
StorageDead(_6); // bb4[0]: scope 0 at src/test/ui/generator/control-flow.rs:36:6: 36:7
StorageDead(_5); // bb4[1]: scope 0 at src/test/ui/generator/control-flow.rs:36:7: 36:8
StorageLive(_7); // bb4[2]: scope 0 at src/test/ui/generator/control-flow.rs:37:5: 42:7
StorageLive(_8); // bb4[3]: scope 0 at src/test/ui/generator/control-flow.rs:37:15: 42:6
_8 = [generator@src/test/ui/generator/control-flow.rs:37:15: 42:6]; // bb4[4]: scope 0 at src/test/ui/generator/control-flow.rs:37:15: 42:6
// generator
// + def_id: DefId(0:23 ~ control_flow[317d]::main[0]::{{closure}}[3])
// + substs: GeneratorSubsts {
// substs: [
// (),
// (),
// {bool, ()},
// ],
// }
// + movability: Movable
_7 = const finish::<[generator@src/test/ui/generator/control-flow.rs:37:15: 42:6 {bool, ()}]>(const 1usize, move _8) -> [return: bb5, unwind: bb1]; // bb4[5]: scope 0 at src/test/ui/generator/control-flow.rs:37:5: 42:7
// ty::Const
// + ty: fn(usize, [generator@src/test/ui/generator/control-flow.rs:37:15: 42:6 {bool, ()}]) -> <[generator@src/test/ui/generator/control-flow.rs:37:15: 42:6 {bool, ()}] as std::ops::Generator>::Return {finish::<[generator@src/test/ui/generator/control-flow.rs:37:15: 42:6 {bool, ()}]>}
// + val: Scalar(<ZST>)
// mir::Constant
// + span: src/test/ui/generator/control-flow.rs:37:5: 37:11
// + literal: Const { ty: fn(usize, [generator@src/test/ui/generator/control-flow.rs:37:15: 42:6 {bool, ()}]) -> <[generator@src/test/ui/generator/control-flow.rs:37:15: 42:6 {bool, ()}] as std::ops::Generator>::Return {finish::<[generator@src/test/ui/generator/control-flow.rs:37:15: 42:6 {bool, ()}]>}, val: Scalar(<ZST>) }
// ty::Const
// + ty: usize
// + val: Scalar(0x0000000000000001)
// mir::Constant
// + span: src/test/ui/generator/control-flow.rs:37:12: 37:13
// + literal: Const { ty: usize, val: Scalar(0x0000000000000001) }
}
bb5: {
StorageDead(_8); // bb5[0]: scope 0 at src/test/ui/generator/control-flow.rs:42:6: 42:7
StorageDead(_7); // bb5[1]: scope 0 at src/test/ui/generator/control-flow.rs:42:7: 42:8
StorageLive(_9); // bb5[2]: scope 0 at src/test/ui/generator/control-flow.rs:43:5: 49:7
StorageLive(_10); // bb5[3]: scope 0 at src/test/ui/generator/control-flow.rs:43:15: 49:6
_10 = [generator@src/test/ui/generator/control-flow.rs:43:15: 49:6]; // bb5[4]: scope 0 at src/test/ui/generator/control-flow.rs:43:15: 49:6
// generator
// + def_id: DefId(0:24 ~ control_flow[317d]::main[0]::{{closure}}[4])
// + substs: GeneratorSubsts {
// substs: [
// (),
// (),
// {(), bool},
// ],
// }
// + movability: Movable
_9 = const finish::<[generator@src/test/ui/generator/control-flow.rs:43:15: 49:6 {(), bool}]>(const 2usize, move _10) -> [return: bb6, unwind: bb1]; // bb5[5]: scope 0 at src/test/ui/generator/control-flow.rs:43:5: 49:7
// ty::Const
// + ty: fn(usize, [generator@src/test/ui/generator/control-flow.rs:43:15: 49:6 {(), bool}]) -> <[generator@src/test/ui/generator/control-flow.rs:43:15: 49:6 {(), bool}] as std::ops::Generator>::Return {finish::<[generator@src/test/ui/generator/control-flow.rs:43:15: 49:6 {(), bool}]>}
// + val: Scalar(<ZST>)
// mir::Constant
// + span: src/test/ui/generator/control-flow.rs:43:5: 43:11
// + literal: Const { ty: fn(usize, [generator@src/test/ui/generator/control-flow.rs:43:15: 49:6 {(), bool}]) -> <[generator@src/test/ui/generator/control-flow.rs:43:15: 49:6 {(), bool}] as std::ops::Generator>::Return {finish::<[generator@src/test/ui/generator/control-flow.rs:43:15: 49:6 {(), bool}]>}, val: Scalar(<ZST>) }
// ty::Const
// + ty: usize
// + val: Scalar(0x0000000000000002)
// mir::Constant
// + span: src/test/ui/generator/control-flow.rs:43:12: 43:13
// + literal: Const { ty: usize, val: Scalar(0x0000000000000002) }
}
bb6: {
StorageDead(_10); // bb6[0]: scope 0 at src/test/ui/generator/control-flow.rs:49:6: 49:7
StorageDead(_9); // bb6[1]: scope 0 at src/test/ui/generator/control-flow.rs:49:7: 49:8
_0 = (); // bb6[2]: scope 0 at src/test/ui/generator/control-flow.rs:24:11: 50:2
return; // bb6[3]: scope 0 at src/test/ui/generator/control-flow.rs:50:2: 50:2
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment