| // MIR for `address_of_reborrow` after SimplifyCfg-initial |
| |
| | User Type Annotations |
| | 0: user_ty: Canonical { value: Ty(*const ^0), max_universe: U0, variables: [CanonicalVarInfo { kind: Ty(General(U0)) }] }, span: $DIR/address_of.rs:8:5: 8:18, inferred_ty: *const [i32; 10] |
| | 1: user_ty: Canonical { value: Ty(*const dyn std::marker::Send), max_universe: U0, variables: [CanonicalVarInfo { kind: Region(U0) }] }, span: $DIR/address_of.rs:10:5: 10:25, inferred_ty: *const dyn std::marker::Send |
| | 2: user_ty: Canonical { value: Ty(*const ^0), max_universe: U0, variables: [CanonicalVarInfo { kind: Ty(General(U0)) }] }, span: $DIR/address_of.rs:14:12: 14:20, inferred_ty: *const [i32; 10] |
| | 3: user_ty: Canonical { value: Ty(*const ^0), max_universe: U0, variables: [CanonicalVarInfo { kind: Ty(General(U0)) }] }, span: $DIR/address_of.rs:14:12: 14:20, inferred_ty: *const [i32; 10] |
| | 4: user_ty: Canonical { value: Ty(*const [i32; 10]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:15:12: 15:28, inferred_ty: *const [i32; 10] |
| | 5: user_ty: Canonical { value: Ty(*const [i32; 10]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:15:12: 15:28, inferred_ty: *const [i32; 10] |
| | 6: user_ty: Canonical { value: Ty(*const dyn std::marker::Send), max_universe: U0, variables: [CanonicalVarInfo { kind: Region(U0) }] }, span: $DIR/address_of.rs:16:12: 16:27, inferred_ty: *const dyn std::marker::Send |
| | 7: user_ty: Canonical { value: Ty(*const dyn std::marker::Send), max_universe: U0, variables: [CanonicalVarInfo { kind: Region(U0) }] }, span: $DIR/address_of.rs:16:12: 16:27, inferred_ty: *const dyn std::marker::Send |
| | 8: user_ty: Canonical { value: Ty(*const [i32]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:17:12: 17:24, inferred_ty: *const [i32] |
| | 9: user_ty: Canonical { value: Ty(*const [i32]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:17:12: 17:24, inferred_ty: *const [i32] |
| | 10: user_ty: Canonical { value: Ty(*const ^0), max_universe: U0, variables: [CanonicalVarInfo { kind: Ty(General(U0)) }] }, span: $DIR/address_of.rs:19:5: 19:18, inferred_ty: *const [i32; 10] |
| | 11: user_ty: Canonical { value: Ty(*const dyn std::marker::Send), max_universe: U0, variables: [CanonicalVarInfo { kind: Region(U0) }] }, span: $DIR/address_of.rs:21:5: 21:25, inferred_ty: *const dyn std::marker::Send |
| | 12: user_ty: Canonical { value: Ty(*const ^0), max_universe: U0, variables: [CanonicalVarInfo { kind: Ty(General(U0)) }] }, span: $DIR/address_of.rs:24:12: 24:20, inferred_ty: *const [i32; 10] |
| | 13: user_ty: Canonical { value: Ty(*const ^0), max_universe: U0, variables: [CanonicalVarInfo { kind: Ty(General(U0)) }] }, span: $DIR/address_of.rs:24:12: 24:20, inferred_ty: *const [i32; 10] |
| | 14: user_ty: Canonical { value: Ty(*const [i32; 10]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:25:12: 25:28, inferred_ty: *const [i32; 10] |
| | 15: user_ty: Canonical { value: Ty(*const [i32; 10]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:25:12: 25:28, inferred_ty: *const [i32; 10] |
| | 16: user_ty: Canonical { value: Ty(*const dyn std::marker::Send), max_universe: U0, variables: [CanonicalVarInfo { kind: Region(U0) }] }, span: $DIR/address_of.rs:26:12: 26:27, inferred_ty: *const dyn std::marker::Send |
| | 17: user_ty: Canonical { value: Ty(*const dyn std::marker::Send), max_universe: U0, variables: [CanonicalVarInfo { kind: Region(U0) }] }, span: $DIR/address_of.rs:26:12: 26:27, inferred_ty: *const dyn std::marker::Send |
| | 18: user_ty: Canonical { value: Ty(*const [i32]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:27:12: 27:24, inferred_ty: *const [i32] |
| | 19: user_ty: Canonical { value: Ty(*const [i32]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:27:12: 27:24, inferred_ty: *const [i32] |
| | 20: user_ty: Canonical { value: Ty(*mut ^0), max_universe: U0, variables: [CanonicalVarInfo { kind: Ty(General(U0)) }] }, span: $DIR/address_of.rs:29:5: 29:16, inferred_ty: *mut [i32; 10] |
| | 21: user_ty: Canonical { value: Ty(*mut dyn std::marker::Send), max_universe: U0, variables: [CanonicalVarInfo { kind: Region(U0) }] }, span: $DIR/address_of.rs:31:5: 31:23, inferred_ty: *mut dyn std::marker::Send |
| | 22: user_ty: Canonical { value: Ty(*mut ^0), max_universe: U0, variables: [CanonicalVarInfo { kind: Ty(General(U0)) }] }, span: $DIR/address_of.rs:34:12: 34:18, inferred_ty: *mut [i32; 10] |
| | 23: user_ty: Canonical { value: Ty(*mut ^0), max_universe: U0, variables: [CanonicalVarInfo { kind: Ty(General(U0)) }] }, span: $DIR/address_of.rs:34:12: 34:18, inferred_ty: *mut [i32; 10] |
| | 24: user_ty: Canonical { value: Ty(*mut [i32; 10]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:35:12: 35:26, inferred_ty: *mut [i32; 10] |
| | 25: user_ty: Canonical { value: Ty(*mut [i32; 10]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:35:12: 35:26, inferred_ty: *mut [i32; 10] |
| | 26: user_ty: Canonical { value: Ty(*mut dyn std::marker::Send), max_universe: U0, variables: [CanonicalVarInfo { kind: Region(U0) }] }, span: $DIR/address_of.rs:36:12: 36:25, inferred_ty: *mut dyn std::marker::Send |
| | 27: user_ty: Canonical { value: Ty(*mut dyn std::marker::Send), max_universe: U0, variables: [CanonicalVarInfo { kind: Region(U0) }] }, span: $DIR/address_of.rs:36:12: 36:25, inferred_ty: *mut dyn std::marker::Send |
| | 28: user_ty: Canonical { value: Ty(*mut [i32]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:37:12: 37:22, inferred_ty: *mut [i32] |
| | 29: user_ty: Canonical { value: Ty(*mut [i32]), max_universe: U0, variables: [] }, span: $DIR/address_of.rs:37:12: 37:22, inferred_ty: *mut [i32] |
| | |
| fn address_of_reborrow() -> () { |
| let mut _0: (); |
| let _1: &[i32; 10]; |
| let _2: [i32; 10]; |
| let mut _4: [i32; 10]; |
| let _5: *const [i32; 10]; |
| let mut _6: *const [i32; 10]; |
| let _7: *const [i32; 10]; |
| let _8: *const dyn std::marker::Send; |
| let mut _9: *const dyn std::marker::Send; |
| let mut _10: *const [i32; 10]; |
| let _11: *const [i32]; |
| let mut _12: *const [i32; 10]; |
| let _13: *const i32; |
| let mut _14: *const [i32; 10]; |
| let mut _18: *const [i32; 10]; |
| let mut _20: *const [i32; 10]; |
| let _21: *const [i32; 10]; |
| let mut _22: *const [i32; 10]; |
| let _23: *const [i32; 10]; |
| let _24: *const dyn std::marker::Send; |
| let mut _25: *const dyn std::marker::Send; |
| let mut _26: *const [i32; 10]; |
| let _27: *const [i32]; |
| let mut _28: *const [i32; 10]; |
| let mut _32: *const [i32; 10]; |
| let mut _34: *const [i32; 10]; |
| let _35: *mut [i32; 10]; |
| let mut _36: *mut [i32; 10]; |
| let _37: *mut [i32; 10]; |
| let _38: *mut dyn std::marker::Send; |
| let mut _39: *mut dyn std::marker::Send; |
| let mut _40: *mut [i32; 10]; |
| let _41: *mut [i32]; |
| let mut _42: *mut [i32; 10]; |
| let mut _46: *mut [i32; 10]; |
| let mut _48: *mut [i32; 10]; |
| scope 1 { |
| debug y => _1; |
| let mut _3: &mut [i32; 10]; |
| scope 2 { |
| debug z => _3; |
| let _15: *const [i32; 10] as UserTypeProjection { base: UserType(2), projs: [] }; |
| scope 3 { |
| debug p => _15; |
| let _16: *const [i32; 10] as UserTypeProjection { base: UserType(4), projs: [] }; |
| scope 4 { |
| debug p => _16; |
| let _17: *const dyn std::marker::Send as UserTypeProjection { base: UserType(6), projs: [] }; |
| scope 5 { |
| debug p => _17; |
| let _19: *const [i32] as UserTypeProjection { base: UserType(8), projs: [] }; |
| scope 6 { |
| debug p => _19; |
| let _29: *const [i32; 10] as UserTypeProjection { base: UserType(12), projs: [] }; |
| scope 7 { |
| debug p => _29; |
| let _30: *const [i32; 10] as UserTypeProjection { base: UserType(14), projs: [] }; |
| scope 8 { |
| debug p => _30; |
| let _31: *const dyn std::marker::Send as UserTypeProjection { base: UserType(16), projs: [] }; |
| scope 9 { |
| debug p => _31; |
| let _33: *const [i32] as UserTypeProjection { base: UserType(18), projs: [] }; |
| scope 10 { |
| debug p => _33; |
| let _43: *mut [i32; 10] as UserTypeProjection { base: UserType(22), projs: [] }; |
| scope 11 { |
| debug p => _43; |
| let _44: *mut [i32; 10] as UserTypeProjection { base: UserType(24), projs: [] }; |
| scope 12 { |
| debug p => _44; |
| let _45: *mut dyn std::marker::Send as UserTypeProjection { base: UserType(26), projs: [] }; |
| scope 13 { |
| debug p => _45; |
| let _47: *mut [i32] as UserTypeProjection { base: UserType(28), projs: [] }; |
| scope 14 { |
| debug p => _47; |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| |
| bb0: { |
| StorageLive(_1); |
| StorageLive(_2); |
| _2 = [const 0_i32; 10]; |
| _1 = &_2; |
| FakeRead(ForLet(None), _1); |
| StorageLive(_3); |
| StorageLive(_4); |
| _4 = [const 0_i32; 10]; |
| _3 = &mut _4; |
| FakeRead(ForLet(None), _3); |
| StorageLive(_5); |
| StorageLive(_6); |
| _6 = &raw const (*_1); |
| AscribeUserType(_6, o, UserTypeProjection { base: UserType(0), projs: [] }); |
| _5 = _6; |
| StorageDead(_6); |
| StorageDead(_5); |
| StorageLive(_7); |
| _7 = &raw const (*_1); |
| StorageDead(_7); |
| StorageLive(_8); |
| StorageLive(_9); |
| StorageLive(_10); |
| _10 = &raw const (*_1); |
| _9 = move _10 as *const dyn std::marker::Send (PointerCoercion(Unsize)); |
| StorageDead(_10); |
| AscribeUserType(_9, o, UserTypeProjection { base: UserType(1), projs: [] }); |
| _8 = _9; |
| StorageDead(_9); |
| StorageDead(_8); |
| StorageLive(_11); |
| StorageLive(_12); |
| _12 = &raw const (*_1); |
| _11 = move _12 as *const [i32] (PointerCoercion(Unsize)); |
| StorageDead(_12); |
| StorageDead(_11); |
| StorageLive(_13); |
| StorageLive(_14); |
| _14 = &raw const (*_1); |
| _13 = move _14 as *const i32 (PointerCoercion(ArrayToPointer)); |
| StorageDead(_14); |
| StorageDead(_13); |
| StorageLive(_15); |
| _15 = &raw const (*_1); |
| FakeRead(ForLet(None), _15); |
| AscribeUserType(_15, o, UserTypeProjection { base: UserType(3), projs: [] }); |
| StorageLive(_16); |
| _16 = &raw const (*_1); |
| FakeRead(ForLet(None), _16); |
| AscribeUserType(_16, o, UserTypeProjection { base: UserType(5), projs: [] }); |
| StorageLive(_17); |
| StorageLive(_18); |
| _18 = &raw const (*_1); |
| _17 = move _18 as *const dyn std::marker::Send (PointerCoercion(Unsize)); |
| StorageDead(_18); |
| FakeRead(ForLet(None), _17); |
| AscribeUserType(_17, o, UserTypeProjection { base: UserType(7), projs: [] }); |
| StorageLive(_19); |
| StorageLive(_20); |
| _20 = &raw const (*_1); |
| _19 = move _20 as *const [i32] (PointerCoercion(Unsize)); |
| StorageDead(_20); |
| FakeRead(ForLet(None), _19); |
| AscribeUserType(_19, o, UserTypeProjection { base: UserType(9), projs: [] }); |
| StorageLive(_21); |
| StorageLive(_22); |
| _22 = &raw const (*_3); |
| AscribeUserType(_22, o, UserTypeProjection { base: UserType(10), projs: [] }); |
| _21 = _22; |
| StorageDead(_22); |
| StorageDead(_21); |
| StorageLive(_23); |
| _23 = &raw const (*_3); |
| StorageDead(_23); |
| StorageLive(_24); |
| StorageLive(_25); |
| StorageLive(_26); |
| _26 = &raw const (*_3); |
| _25 = move _26 as *const dyn std::marker::Send (PointerCoercion(Unsize)); |
| StorageDead(_26); |
| AscribeUserType(_25, o, UserTypeProjection { base: UserType(11), projs: [] }); |
| _24 = _25; |
| StorageDead(_25); |
| StorageDead(_24); |
| StorageLive(_27); |
| StorageLive(_28); |
| _28 = &raw const (*_3); |
| _27 = move _28 as *const [i32] (PointerCoercion(Unsize)); |
| StorageDead(_28); |
| StorageDead(_27); |
| StorageLive(_29); |
| _29 = &raw const (*_3); |
| FakeRead(ForLet(None), _29); |
| AscribeUserType(_29, o, UserTypeProjection { base: UserType(13), projs: [] }); |
| StorageLive(_30); |
| _30 = &raw const (*_3); |
| FakeRead(ForLet(None), _30); |
| AscribeUserType(_30, o, UserTypeProjection { base: UserType(15), projs: [] }); |
| StorageLive(_31); |
| StorageLive(_32); |
| _32 = &raw const (*_3); |
| _31 = move _32 as *const dyn std::marker::Send (PointerCoercion(Unsize)); |
| StorageDead(_32); |
| FakeRead(ForLet(None), _31); |
| AscribeUserType(_31, o, UserTypeProjection { base: UserType(17), projs: [] }); |
| StorageLive(_33); |
| StorageLive(_34); |
| _34 = &raw const (*_3); |
| _33 = move _34 as *const [i32] (PointerCoercion(Unsize)); |
| StorageDead(_34); |
| FakeRead(ForLet(None), _33); |
| AscribeUserType(_33, o, UserTypeProjection { base: UserType(19), projs: [] }); |
| StorageLive(_35); |
| StorageLive(_36); |
| _36 = &raw mut (*_3); |
| AscribeUserType(_36, o, UserTypeProjection { base: UserType(20), projs: [] }); |
| _35 = _36; |
| StorageDead(_36); |
| StorageDead(_35); |
| StorageLive(_37); |
| _37 = &raw mut (*_3); |
| StorageDead(_37); |
| StorageLive(_38); |
| StorageLive(_39); |
| StorageLive(_40); |
| _40 = &raw mut (*_3); |
| _39 = move _40 as *mut dyn std::marker::Send (PointerCoercion(Unsize)); |
| StorageDead(_40); |
| AscribeUserType(_39, o, UserTypeProjection { base: UserType(21), projs: [] }); |
| _38 = _39; |
| StorageDead(_39); |
| StorageDead(_38); |
| StorageLive(_41); |
| StorageLive(_42); |
| _42 = &raw mut (*_3); |
| _41 = move _42 as *mut [i32] (PointerCoercion(Unsize)); |
| StorageDead(_42); |
| StorageDead(_41); |
| StorageLive(_43); |
| _43 = &raw mut (*_3); |
| FakeRead(ForLet(None), _43); |
| AscribeUserType(_43, o, UserTypeProjection { base: UserType(23), projs: [] }); |
| StorageLive(_44); |
| _44 = &raw mut (*_3); |
| FakeRead(ForLet(None), _44); |
| AscribeUserType(_44, o, UserTypeProjection { base: UserType(25), projs: [] }); |
| StorageLive(_45); |
| StorageLive(_46); |
| _46 = &raw mut (*_3); |
| _45 = move _46 as *mut dyn std::marker::Send (PointerCoercion(Unsize)); |
| StorageDead(_46); |
| FakeRead(ForLet(None), _45); |
| AscribeUserType(_45, o, UserTypeProjection { base: UserType(27), projs: [] }); |
| StorageLive(_47); |
| StorageLive(_48); |
| _48 = &raw mut (*_3); |
| _47 = move _48 as *mut [i32] (PointerCoercion(Unsize)); |
| StorageDead(_48); |
| FakeRead(ForLet(None), _47); |
| AscribeUserType(_47, o, UserTypeProjection { base: UserType(29), projs: [] }); |
| _0 = const (); |
| StorageDead(_47); |
| StorageDead(_45); |
| StorageDead(_44); |
| StorageDead(_43); |
| StorageDead(_33); |
| StorageDead(_31); |
| StorageDead(_30); |
| StorageDead(_29); |
| StorageDead(_19); |
| StorageDead(_17); |
| StorageDead(_16); |
| StorageDead(_15); |
| StorageDead(_4); |
| StorageDead(_3); |
| StorageDead(_2); |
| StorageDead(_1); |
| return; |
| } |
| } |