about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAdam Perry <adam.n.perry@gmail.com>2019-10-27 15:16:46 -0700
committerAdam Perry <adam.n.perry@gmail.com>2019-12-05 21:12:34 -0800
commitcc574be985c4932f6f80c6a8a52ece26d5883300 (patch)
tree712315df7b4ea9d8b1ba78dda7e2ef169222f23b
parent28b22571609ef415ef974844982ba5f03c447ab4 (diff)
downloadrust-cc574be985c4932f6f80c6a8a52ece26d5883300.tar.gz
rust-cc574be985c4932f6f80c6a8a52ece26d5883300.zip
`#[track_caller]` suppresses MIR inlining.
-rw-r--r--src/librustc_mir/transform/inline.rs5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/librustc_mir/transform/inline.rs b/src/librustc_mir/transform/inline.rs
index 79cb7fb0b76..6462672c010 100644
--- a/src/librustc_mir/transform/inline.rs
+++ b/src/librustc_mir/transform/inline.rs
@@ -230,6 +230,11 @@ impl Inliner<'tcx> {
 
         let codegen_fn_attrs = tcx.codegen_fn_attrs(callsite.callee);
 
+        if codegen_fn_attrs.flags.contains(CodegenFnAttrFlags::TRACK_CALLER) {
+            debug!("`#[track_caller]` present - not inlining");
+            return false;
+        }
+
         let hinted = match codegen_fn_attrs.inline {
             // Just treat inline(always) as a hint for now,
             // there are cases that prevent inlining that we