1// MIR for `foo` after Inline 2 3fn foo(_1: T, _2: i32) -> (i32, T) { 4 debug t => _1; 5 debug q => _2; 6 let mut _0: (i32, T); 7 let _3: [closure@foo<T>::{closure#0}]; 8 let mut _4: &i32; 9 let mut _5: &T; 10 let mut _6: &[closure@foo<T>::{closure#0}]; 11 let mut _7: (i32,); 12 let mut _8: i32; 13 let mut _9: i32; 14 scope 1 { 15 debug x => _3; 16 scope 2 (inlined foo::<T>::{closure#0}) { 17 debug _q => _9; 18 debug q => (*((*_6).0: &i32)); 19 debug t => (*((*_6).1: &T)); 20 let mut _10: &i32; 21 let mut _11: i32; 22 let mut _12: &T; 23 let mut _13: T; 24 } 25 } 26 27 bb0: { 28 StorageLive(_3); 29 StorageLive(_4); 30 _4 = &_2; 31 StorageLive(_5); 32 _5 = &_1; 33 _3 = [closure@foo::<T>::{closure#0}] { q: move _4, t: move _5 }; 34 StorageDead(_5); 35 StorageDead(_4); 36 StorageLive(_6); 37 _6 = &_3; 38 StorageLive(_7); 39 StorageLive(_8); 40 _8 = _2; 41 _7 = (move _8,); 42 StorageLive(_9); 43 _9 = move (_7.0: i32); 44 StorageLive(_11); 45 _10 = deref_copy ((*_6).0: &i32); 46 _11 = (*_10); 47 StorageLive(_13); 48 _12 = deref_copy ((*_6).1: &T); 49 _13 = (*_12); 50 _0 = (move _11, move _13); 51 StorageDead(_13); 52 StorageDead(_11); 53 StorageDead(_9); 54 StorageDead(_8); 55 StorageDead(_7); 56 StorageDead(_6); 57 StorageDead(_3); 58 return; 59 } 60} 61