Skip to content

Commit e72afa9

Browse files
committed
Consume optimization fuel from the MIR inliner
This makes it easier to debug mis-optimizations that occur during inlining. Thanks to @nikomatsakis for the suggestion!
1 parent ddd4b19 commit e72afa9

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

Diff for: src/librustc_mir/transform/inline.rs

+13-1
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ impl<'a, 'tcx> Inliner<'a, 'tcx> {
137137

138138
let callee_mir = match self.tcx.try_optimized_mir(callsite.location.span,
139139
callsite.callee) {
140-
Ok(callee_mir) if self.should_inline(callsite, callee_mir) => {
140+
Ok(callee_mir) if self.consider_optimizing(callsite, callee_mir) => {
141141
self.tcx.subst_and_normalize_erasing_regions(
142142
&callsite.substs,
143143
param_env,
@@ -198,6 +198,18 @@ impl<'a, 'tcx> Inliner<'a, 'tcx> {
198198
}
199199
}
200200

201+
fn consider_optimizing(&self,
202+
callsite: CallSite<'tcx>,
203+
callee_mir: &Mir<'tcx>)
204+
-> bool
205+
{
206+
debug!("consider_optimizing({:?})", callsite);
207+
self.should_inline(callsite, callee_mir)
208+
&& self.tcx.consider_optimizing(|| format!("Inline {:?} into {:?}",
209+
callee_mir.span,
210+
callsite))
211+
}
212+
201213
fn should_inline(&self,
202214
callsite: CallSite<'tcx>,
203215
callee_mir: &Mir<'tcx>)

0 commit comments

Comments
 (0)