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