1- // MIR for `get_query` before Inline 2+ // MIR for `get_query` after Inline 3 4 fn get_query(_1: &T) -> () { 5 debug t => _1; 6 let mut _0: (); 7 let _2: &<Q as Query>::C; 8 let mut _3: &T; 9 let mut _4: &<Q as Query>::C; 10 scope 1 { 11 debug c => _2; 12+ scope 2 (inlined try_execute_query::<<Q as Query>::C>) { 13+ debug c => _4; 14+ let mut _5: &dyn Cache<V = <Q as Query>::V>; 15+ scope 3 (inlined mk_cycle::<<Q as Query>::V>) { 16+ debug c => _5; 17+ } 18+ } 19 } 20 21 bb0: { 22 StorageLive(_2); 23 StorageLive(_3); 24 _3 = &(*_1); 25 _2 = <Q as Query>::cache::<T>(move _3) -> [return: bb1, unwind unreachable]; 26 } 27 28 bb1: { 29 StorageDead(_3); 30 StorageLive(_4); 31 _4 = &(*_2); 32- _0 = try_execute_query::<<Q as Query>::C>(move _4) -> [return: bb2, unwind unreachable]; 33+ StorageLive(_5); 34+ _5 = _4 as &dyn Cache<V = <Q as Query>::V> (PointerCoercion(Unsize)); 35+ _0 = <dyn Cache<V = <Q as Query>::V> as Cache>::store_nocache(_5) -> [return: bb2, unwind unreachable]; 36 } 37 38 bb2: { 39+ StorageDead(_5); 40 StorageDead(_4); 41 StorageDead(_2); 42 return; 43 } 44 } 45 46