diff options
author | Mark Rousskov <mark.simulacrum@gmail.com> | 2018-11-08 18:15:01 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-11-08 18:15:01 -0700 |
commit | 96ee13a56d856f6d0d58da796389c0b49f438bc8 (patch) | |
tree | 2f76aab85c66fe05ff6a358d39d65071c1008ceb /src/librustc_mir | |
parent | e873984fa8fff9df303df902bb1dc10528cd99ec (diff) | |
parent | e72afa9573ab8cb7ca2482f53b234bb59e3040ef (diff) | |
download | rust-96ee13a56d856f6d0d58da796389c0b49f438bc8.tar.gz |
Rollup merge of #55739 - wesleywiser:mir_inline_fuel, r=nikomatsakis
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!
Diffstat (limited to 'src/librustc_mir')
-rw-r--r-- | src/librustc_mir/transform/inline.rs | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/librustc_mir/transform/inline.rs b/src/librustc_mir/transform/inline.rs index 199cf5650fd..2db3bbda323 100644 --- a/src/librustc_mir/transform/inline.rs +++ b/src/librustc_mir/transform/inline.rs @@ -137,7 +137,7 @@ impl<'a, 'tcx> Inliner<'a, 'tcx> { let callee_mir = match self.tcx.try_optimized_mir(callsite.location.span, callsite.callee) { - Ok(callee_mir) if self.should_inline(callsite, callee_mir) => { + Ok(callee_mir) if self.consider_optimizing(callsite, callee_mir) => { self.tcx.subst_and_normalize_erasing_regions( &callsite.substs, param_env, @@ -198,6 +198,18 @@ impl<'a, 'tcx> Inliner<'a, 'tcx> { } } + fn consider_optimizing(&self, + callsite: CallSite<'tcx>, + callee_mir: &Mir<'tcx>) + -> bool + { + debug!("consider_optimizing({:?})", callsite); + self.should_inline(callsite, callee_mir) + && self.tcx.consider_optimizing(|| format!("Inline {:?} into {:?}", + callee_mir.span, + callsite)) + } + fn should_inline(&self, callsite: CallSite<'tcx>, callee_mir: &Mir<'tcx>) |