2020-04-04 12:15:01 -05:00
// MIR for `main` 0 nll
| Free Region Mapping
| '_ #0 r | Global | [ '_ #0 r , '_ #1 r ]
| '_ #1 r | Local | [ '_ #1 r ]
|
| Inferred Region Values
2021-09-02 04:18:08 -05:00
| '_ #0 r | U0 | { bb0 [ 0 ..= 8 ] , bb1 [ 0 ..= 7 ] , bb2 [ 0 ..= 3 ] , bb3 [ 0 ..= 3 ] , bb4 [ 0 ..= 1 ] , bb5 [ 0 ..= 2 ] , bb6 [ 0 ..= 5 ] , bb7 [ 0 ] , '_ #0 r , '_ #1 r }
| '_ #1 r | U0 | { bb0 [ 0 ..= 8 ] , bb1 [ 0 ..= 7 ] , bb2 [ 0 ..= 3 ] , bb3 [ 0 ..= 3 ] , bb4 [ 0 ..= 1 ] , bb5 [ 0 ..= 2 ] , bb6 [ 0 ..= 5 ] , bb7 [ 0 ] , '_ #1 r }
2022-06-26 14:40:45 -05:00
| '_ #2 r | U0 | { bb1 [ 0 ..= 7 ] , bb2 [ 0 ..= 2 ] }
| '_ #3 r | U0 | { bb1 [ 1 ..= 7 ] , bb2 [ 0 ..= 2 ] }
| '_ #4 r | U0 | { bb1 [ 4 ..= 7 ] , bb2 [ 0 ..= 2 ] }
2020-04-04 12:15:01 -05:00
|
| Inference Constraints
2021-09-02 04:18:08 -05:00
| '_ #0 r live at { bb0 [ 0 ..= 8 ] , bb1 [ 0 ..= 7 ] , bb2 [ 0 ..= 3 ] , bb3 [ 0 ..= 3 ] , bb4 [ 0 ..= 1 ] , bb5 [ 0 ..= 2 ] , bb6 [ 0 ..= 5 ] , bb7 [ 0 ] }
| '_ #1 r live at { bb0 [ 0 ..= 8 ] , bb1 [ 0 ..= 7 ] , bb2 [ 0 ..= 3 ] , bb3 [ 0 ..= 3 ] , bb4 [ 0 ..= 1 ] , bb5 [ 0 ..= 2 ] , bb6 [ 0 ..= 5 ] , bb7 [ 0 ] }
2022-06-26 14:40:45 -05:00
| '_ #2 r live at { bb1 [ 0 ] }
| '_ #3 r live at { bb1 [ 1 ..= 3 ] }
| '_ #4 r live at { bb1 [ 4 ..= 7 ] , bb2 [ 0 ..= 2 ] }
2022-11-02 16:54:49 -05:00
| '_ #2 r : '_ #3 r due to Assignment at Single ( bb1 [ 0 ] ) ( $DIR / region_subtyping_basic . rs :18 :13 : 18 :18 ( #0 )
| '_ #3 r : '_ #4 r due to Assignment at Single ( bb1 [ 3 ] ) ( $DIR / region_subtyping_basic . rs :19 :13 : 19 :14 ( #0 )
2020-04-04 12:15:01 -05:00
|
fn main ( ) -> ( ) {
2022-11-02 16:54:49 -05:00
let mut _0 : ( ) ; // return place in scope 0 at $DIR/region_subtyping_basic.rs:+0:11: +0:11
let mut _1 : [ usize ; Const { ty : usize , kind : Value ( Leaf ( 0x00000003 ) ) } ] ; // in scope 0 at $DIR/region_subtyping_basic.rs:+1:9: +1:14
let _3 : usize ; // in scope 0 at $DIR/region_subtyping_basic.rs:+2:16: +2:17
let mut _4 : usize ; // in scope 0 at $DIR/region_subtyping_basic.rs:+2:14: +2:18
let mut _5 : bool ; // in scope 0 at $DIR/region_subtyping_basic.rs:+2:14: +2:18
let mut _7 : bool ; // in scope 0 at $DIR/region_subtyping_basic.rs:+4:8: +4:12
let _8 : bool ; // in scope 0 at $DIR/region_subtyping_basic.rs:+5:9: +5:18
let mut _9 : usize ; // in scope 0 at $DIR/region_subtyping_basic.rs:+5:15: +5:17
let _10 : bool ; // in scope 0 at $DIR/region_subtyping_basic.rs:+7:9: +7:18
2020-04-04 12:15:01 -05:00
scope 1 {
2022-11-02 16:54:49 -05:00
debug v = > _1 ; // in scope 1 at $DIR/region_subtyping_basic.rs:+1:9: +1:14
let _2 : & '_ #3 r usize ; // in scope 1 at $DIR/region_subtyping_basic.rs:+2:9: +2:10
2020-04-04 12:15:01 -05:00
scope 2 {
2022-11-02 16:54:49 -05:00
debug p = > _2 ; // in scope 2 at $DIR/region_subtyping_basic.rs:+2:9: +2:10
let _6 : & '_ #4 r usize ; // in scope 2 at $DIR/region_subtyping_basic.rs:+3:9: +3:10
2020-04-04 12:15:01 -05:00
scope 3 {
2022-11-02 16:54:49 -05:00
debug q = > _6 ; // in scope 3 at $DIR/region_subtyping_basic.rs:+3:9: +3:10
2020-04-04 12:15:01 -05:00
}
}
}
bb0 : {
2022-11-02 16:54:49 -05:00
StorageLive ( _1 ) ; // bb0[0]: scope 0 at $DIR/region_subtyping_basic.rs:+1:9: +1:14
_1 = [ const ConstValue ( Scalar ( 0x00000001 ) : usize ) , const ConstValue ( Scalar ( 0x00000002 ) : usize ) , const ConstValue ( Scalar ( 0x00000003 ) : usize ) ] ; // bb0[1]: scope 0 at $DIR/region_subtyping_basic.rs:+1:17: +1:26
FakeRead ( ForLet ( None ) , _1 ) ; // bb0[2]: scope 0 at $DIR/region_subtyping_basic.rs:+1:9: +1:14
StorageLive ( _2 ) ; // bb0[3]: scope 1 at $DIR/region_subtyping_basic.rs:+2:9: +2:10
StorageLive ( _3 ) ; // bb0[4]: scope 1 at $DIR/region_subtyping_basic.rs:+2:16: +2:17
_3 = const ConstValue ( Scalar ( 0x00000000 ) : usize ) ; // bb0[5]: scope 1 at $DIR/region_subtyping_basic.rs:+2:16: +2:17
_4 = Len ( _1 ) ; // bb0[6]: scope 1 at $DIR/region_subtyping_basic.rs:+2:14: +2:18
_5 = Lt ( _3 , _4 ) ; // bb0[7]: scope 1 at $DIR/region_subtyping_basic.rs:+2:14: +2:18
assert ( move _5 , " index out of bounds: the length is {} but the index is {} " , move _4 , _3 ) -> [ success : bb1 , unwind : bb7 ] ; // bb0[8]: scope 1 at $DIR/region_subtyping_basic.rs:+2:14: +2:18
2020-04-04 12:15:01 -05:00
}
2020-10-02 15:11:24 -05:00
bb1 : {
2022-11-02 16:54:49 -05:00
_2 = & '_ #2 r _1 [ _3 ] ; // bb1[0]: scope 1 at $DIR/region_subtyping_basic.rs:+2:13: +2:18
FakeRead ( ForLet ( None ) , _2 ) ; // bb1[1]: scope 1 at $DIR/region_subtyping_basic.rs:+2:9: +2:10
StorageLive ( _6 ) ; // bb1[2]: scope 2 at $DIR/region_subtyping_basic.rs:+3:9: +3:10
_6 = _2 ; // bb1[3]: scope 2 at $DIR/region_subtyping_basic.rs:+3:13: +3:14
FakeRead ( ForLet ( None ) , _6 ) ; // bb1[4]: scope 2 at $DIR/region_subtyping_basic.rs:+3:9: +3:10
StorageLive ( _7 ) ; // bb1[5]: scope 3 at $DIR/region_subtyping_basic.rs:+4:8: +4:12
_7 = const ConstValue ( Scalar ( 0x01 ) : bool ) ; // bb1[6]: scope 3 at $DIR/region_subtyping_basic.rs:+4:8: +4:12
2022-12-03 18:03:27 -06:00
switchInt ( move _7 ) -> [ 0 : bb4 , otherwise : bb2 ] ; // bb1[7]: scope 3 at $DIR/region_subtyping_basic.rs:+4:8: +4:12
2020-06-04 10:29:10 -05:00
}
bb2 : {
2022-11-02 16:54:49 -05:00
StorageLive ( _8 ) ; // bb2[0]: scope 3 at $DIR/region_subtyping_basic.rs:+5:9: +5:18
StorageLive ( _9 ) ; // bb2[1]: scope 3 at $DIR/region_subtyping_basic.rs:+5:15: +5:17
_9 = ( * _6 ) ; // bb2[2]: scope 3 at $DIR/region_subtyping_basic.rs:+5:15: +5:17
_8 = ConstValue ( ZeroSized : fn ( usize ) -> bool { use_x } ) ( move _9 ) -> [ return : bb3 , unwind : bb7 ] ; // bb2[3]: scope 3 at $DIR/region_subtyping_basic.rs:+5:9: +5:18
2021-01-01 12:38:11 -06:00
// mir::Constant
2022-11-02 16:54:49 -05:00
// + span: $DIR/region_subtyping_basic.rs:21:9: 21:14
2022-07-06 09:14:46 -05:00
// + literal: Const { ty: fn(usize) -> bool {use_x}, val: Value(<ZST>) }
2020-04-04 12:15:01 -05:00
}
2020-06-04 10:29:10 -05:00
bb3 : {
2022-11-02 16:54:49 -05:00
StorageDead ( _9 ) ; // bb3[0]: scope 3 at $DIR/region_subtyping_basic.rs:+5:17: +5:18
StorageDead ( _8 ) ; // bb3[1]: scope 3 at $DIR/region_subtyping_basic.rs:+5:18: +5:19
_0 = const ConstValue ( ZeroSized : ( ) ) ; // bb3[2]: scope 3 at $DIR/region_subtyping_basic.rs:+4:13: +6:6
goto -> bb6 ; // bb3[3]: scope 3 at $DIR/region_subtyping_basic.rs:+4:5: +8:6
2020-04-04 12:15:01 -05:00
}
2020-10-02 15:11:24 -05:00
bb4 : {
2022-11-02 16:54:49 -05:00
StorageLive ( _10 ) ; // bb4[0]: scope 3 at $DIR/region_subtyping_basic.rs:+7:9: +7:18
_10 = ConstValue ( ZeroSized : fn ( usize ) -> bool { use_x } ) ( const ConstValue ( Scalar ( 0x00000016 ) : usize ) ) -> [ return : bb5 , unwind : bb7 ] ; // bb4[1]: scope 3 at $DIR/region_subtyping_basic.rs:+7:9: +7:18
2021-09-02 04:18:08 -05:00
// mir::Constant
2022-11-02 16:54:49 -05:00
// + span: $DIR/region_subtyping_basic.rs:23:9: 23:14
2022-07-06 09:14:46 -05:00
// + literal: Const { ty: fn(usize) -> bool {use_x}, val: Value(<ZST>) }
2020-04-04 12:15:01 -05:00
}
2020-10-02 15:11:24 -05:00
bb5 : {
2022-11-02 16:54:49 -05:00
StorageDead ( _10 ) ; // bb5[0]: scope 3 at $DIR/region_subtyping_basic.rs:+7:18: +7:19
_0 = const ConstValue ( ZeroSized : ( ) ) ; // bb5[1]: scope 3 at $DIR/region_subtyping_basic.rs:+6:12: +8:6
goto -> bb6 ; // bb5[2]: scope 3 at $DIR/region_subtyping_basic.rs:+4:5: +8:6
2020-10-02 15:11:24 -05:00
}
2020-06-04 10:29:10 -05:00
bb6 : {
2022-11-02 16:54:49 -05:00
StorageDead ( _7 ) ; // bb6[0]: scope 3 at $DIR/region_subtyping_basic.rs:+8:5: +8:6
StorageDead ( _6 ) ; // bb6[1]: scope 2 at $DIR/region_subtyping_basic.rs:+9:1: +9:2
StorageDead ( _3 ) ; // bb6[2]: scope 1 at $DIR/region_subtyping_basic.rs:+9:1: +9:2
StorageDead ( _2 ) ; // bb6[3]: scope 1 at $DIR/region_subtyping_basic.rs:+9:1: +9:2
StorageDead ( _1 ) ; // bb6[4]: scope 0 at $DIR/region_subtyping_basic.rs:+9:1: +9:2
return ; // bb6[5]: scope 0 at $DIR/region_subtyping_basic.rs:+9:2: +9:2
2020-04-04 12:15:01 -05:00
}
2021-01-01 12:38:11 -06:00
bb7 ( cleanup ) : {
2022-11-02 16:54:49 -05:00
resume ; // bb7[0]: scope 0 at $DIR/region_subtyping_basic.rs:+0:1: +9:2
2020-04-04 12:15:01 -05:00
}
}