// 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:10: 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:10: 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:10: 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:10: 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:10: 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:10: 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 = copy _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, AsCast)); StorageDead(_10); AscribeUserType(_9, o, UserTypeProjection { base: UserType(1), projs: [] }); _8 = copy _9; StorageDead(_9); StorageDead(_8); StorageLive(_11); StorageLive(_12); _12 = &raw const (*_1); _11 = move _12 as *const [i32] (PointerCoercion(Unsize, AsCast)); StorageDead(_12); StorageDead(_11); StorageLive(_13); StorageLive(_14); _14 = &raw const (*_1); _13 = move _14 as *const i32 (PointerCoercion(ArrayToPointer, AsCast)); 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, Implicit)); 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, Implicit)); 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 = copy _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, AsCast)); StorageDead(_26); AscribeUserType(_25, o, UserTypeProjection { base: UserType(11), projs: [] }); _24 = copy _25; StorageDead(_25); StorageDead(_24); StorageLive(_27); StorageLive(_28); _28 = &raw const (*_3); _27 = move _28 as *const [i32] (PointerCoercion(Unsize, AsCast)); 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, Implicit)); 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, Implicit)); 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 = copy _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, AsCast)); StorageDead(_40); AscribeUserType(_39, o, UserTypeProjection { base: UserType(21), projs: [] }); _38 = copy _39; StorageDead(_39); StorageDead(_38); StorageLive(_41); StorageLive(_42); _42 = &raw mut (*_3); _41 = move _42 as *mut [i32] (PointerCoercion(Unsize, AsCast)); 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, Implicit)); 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, Implicit)); 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; } }