@@ -26,7 +26,7 @@ use rustc_hir::def_id::{DefId, LocalDefId};
26
26
use rustc_hir:: intravisit:: { self , Visitor } ;
27
27
use rustc_index:: vec:: IndexVec ;
28
28
use rustc_middle:: mir:: visit:: Visitor as _;
29
- use rustc_middle:: mir:: { traversal, Body , ConstQualifs , MirPass , MirPhase , Promoted } ;
29
+ use rustc_middle:: mir:: { traversal, Body , ConstQualifs , MirPass , MirPhase , Promoted , Summary } ;
30
30
use rustc_middle:: ty:: query:: Providers ;
31
31
use rustc_middle:: ty:: { self , TyCtxt , TypeVisitable } ;
32
32
use rustc_span:: { Span , Symbol } ;
@@ -120,6 +120,7 @@ pub fn provide(providers: &mut Providers) {
120
120
mir_for_ctfe,
121
121
mir_for_ctfe_of_const_arg,
122
122
optimized_mir,
123
+ optimized_mir_summary,
123
124
is_mir_available,
124
125
is_ctfe_mir_available : |tcx, did| is_mir_available ( tcx, did) ,
125
126
mir_callgraph_reachable : inline:: cycle:: mir_callgraph_reachable,
@@ -573,3 +574,11 @@ fn promoted_mir<'tcx>(
573
574
574
575
tcx. arena . alloc ( promoted)
575
576
}
577
+
578
+ fn optimized_mir_summary < ' tcx > ( tcx : TyCtxt < ' tcx > , did : DefId ) -> Summary {
579
+ let body = tcx. optimized_mir ( did) ;
580
+ let param_env = tcx. param_env_reveal_all_normalized ( did) ;
581
+ let cost_info = inline:: body_cost ( tcx, param_env, body, |ty| ty) ;
582
+ let inline:: InlineCostInfo { cost, bbcount, diverges } = cost_info;
583
+ Summary { inlining_cost : cost, bbcount, diverges }
584
+ }
0 commit comments