2beabbbf6f
It makes it sound like the `ExprKind` and `Rvalue` are supposed to represent all pointer related casts, when in reality their just used to share a some enum variants. Make it clear there these are only coercion to make it clear why only some pointer related "casts" are in the enum.
46 lines
1.3 KiB
Diff
46 lines
1.3 KiB
Diff
- // MIR for `get_query` before Inline
|
|
+ // MIR for `get_query` after Inline
|
|
|
|
fn get_query(_1: &T) -> () {
|
|
debug t => _1;
|
|
let mut _0: ();
|
|
let _2: &<Q as Query>::C;
|
|
let mut _3: &T;
|
|
let mut _4: &<Q as Query>::C;
|
|
scope 1 {
|
|
debug c => _2;
|
|
+ scope 2 (inlined try_execute_query::<<Q as Query>::C>) {
|
|
+ debug c => _4;
|
|
+ let mut _5: &dyn Cache<V = <Q as Query>::V>;
|
|
+ scope 3 (inlined mk_cycle::<<Q as Query>::V>) {
|
|
+ debug c => _5;
|
|
+ }
|
|
+ }
|
|
}
|
|
|
|
bb0: {
|
|
StorageLive(_2);
|
|
StorageLive(_3);
|
|
_3 = &(*_1);
|
|
_2 = <Q as Query>::cache::<T>(move _3) -> [return: bb1, unwind unreachable];
|
|
}
|
|
|
|
bb1: {
|
|
StorageDead(_3);
|
|
StorageLive(_4);
|
|
_4 = &(*_2);
|
|
- _0 = try_execute_query::<<Q as Query>::C>(move _4) -> [return: bb2, unwind unreachable];
|
|
+ StorageLive(_5);
|
|
+ _5 = _4 as &dyn Cache<V = <Q as Query>::V> (PointerCoercion(Unsize));
|
|
+ _0 = <dyn Cache<V = <Q as Query>::V> as Cache>::store_nocache(_5) -> [return: bb2, unwind unreachable];
|
|
}
|
|
|
|
bb2: {
|
|
+ StorageDead(_5);
|
|
StorageDead(_4);
|
|
StorageDead(_2);
|
|
return;
|
|
}
|
|
}
|
|
|