• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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