@@ -26,7 +26,7 @@ use rustc_hir::def_id::{DefId, LocalDefId};
2626use rustc_hir:: intravisit:: { self , Visitor } ;
2727use rustc_index:: vec:: IndexVec ;
2828use 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 } ;
3030use rustc_middle:: ty:: query:: Providers ;
3131use rustc_middle:: ty:: { self , TyCtxt , TypeVisitable } ;
3232use rustc_span:: { Span , Symbol } ;
@@ -120,6 +120,7 @@ pub fn provide(providers: &mut Providers) {
120120 mir_for_ctfe,
121121 mir_for_ctfe_of_const_arg,
122122 optimized_mir,
123+ optimized_mir_summary,
123124 is_mir_available,
124125 is_ctfe_mir_available : |tcx, did| is_mir_available ( tcx, did) ,
125126 mir_callgraph_reachable : inline:: cycle:: mir_callgraph_reachable,
@@ -573,3 +574,11 @@ fn promoted_mir<'tcx>(
573574
574575 tcx. arena . alloc ( promoted)
575576}
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