about summary refs log tree commit diff
path: root/compiler/rustc_mir_transform/src/cost_checker.rs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/rustc_mir_transform/src/cost_checker.rs')
-rw-r--r--compiler/rustc_mir_transform/src/cost_checker.rs7
1 files changed, 6 insertions, 1 deletions
diff --git a/compiler/rustc_mir_transform/src/cost_checker.rs b/compiler/rustc_mir_transform/src/cost_checker.rs
index 3333bebff3a..a1c1422912e 100644
--- a/compiler/rustc_mir_transform/src/cost_checker.rs
+++ b/compiler/rustc_mir_transform/src/cost_checker.rs
@@ -40,7 +40,9 @@ impl<'b, 'tcx> CostChecker<'b, 'tcx> {
         fn is_call_like(bbd: &BasicBlockData<'_>) -> bool {
             use TerminatorKind::*;
             match bbd.terminator().kind {
-                Call { .. } | Drop { .. } | Assert { .. } | InlineAsm { .. } => true,
+                Call { .. } | TailCall { .. } | Drop { .. } | Assert { .. } | InlineAsm { .. } => {
+                    true
+                }
 
                 Goto { .. }
                 | SwitchInt { .. }
@@ -137,6 +139,9 @@ impl<'tcx> Visitor<'tcx> for CostChecker<'_, 'tcx> {
                     self.penalty += LANDINGPAD_PENALTY;
                 }
             }
+            TerminatorKind::TailCall { .. } => {
+                self.penalty += CALL_PENALTY;
+            }
             TerminatorKind::SwitchInt { discr, targets } => {
                 if discr.constant().is_some() {
                     // Not only will this become a `Goto`, but likely other