about summary refs log tree commit diff
diff options
context:
space:
mode:
authorTomasz Miąsko <tomasz.miasko@gmail.com>2021-02-18 00:00:00 +0000
committerTomasz Miąsko <tomasz.miasko@gmail.com>2021-02-18 00:00:00 +0000
commita3659bbe6cfc3ff3a4cd74dd0ff31ad3632534c9 (patch)
tree215f37e2fb0e37b9e6dc9f974f921ac786af6e3e
parent152f6609246558be5e2582e67376194815e6ba0d (diff)
downloadrust-a3659bbe6cfc3ff3a4cd74dd0ff31ad3632534c9.tar.gz
rust-a3659bbe6cfc3ff3a4cd74dd0ff31ad3632534c9.zip
Inline hot part of PatStack::head_ctor
When building rustc with `-Codegen-units=1` this inline hint ensures
that obtaining already initialized head constructor does not involve
a function call overhead and reduces the instruction count in
match-stress-enum-check full benchmark from 11.9G to 9.8G.

It shouldn't have significant impact on the currently default
configuration where it reflects existing inlining decisions.
-rw-r--r--compiler/rustc_mir_build/src/thir/pattern/usefulness.rs1
1 files changed, 1 insertions, 0 deletions
diff --git a/compiler/rustc_mir_build/src/thir/pattern/usefulness.rs b/compiler/rustc_mir_build/src/thir/pattern/usefulness.rs
index 010fe4fd524..553c0ab3166 100644
--- a/compiler/rustc_mir_build/src/thir/pattern/usefulness.rs
+++ b/compiler/rustc_mir_build/src/thir/pattern/usefulness.rs
@@ -439,6 +439,7 @@ impl<'p, 'tcx> PatStack<'p, 'tcx> {
         self.pats[0]
     }
 
+    #[inline]
     fn head_ctor<'a>(&'a self, cx: &MatchCheckCtxt<'p, 'tcx>) -> &'a Constructor<'tcx> {
         self.head_ctor.get_or_init(|| Constructor::from_pat(cx, self.head()))
     }