about summary refs log tree commit diff
path: root/src/comp
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2011-05-18 18:48:57 -0700
committerPatrick Walton <pcwalton@mimiga.net>2011-05-18 18:48:57 -0700
commitd2bdfe36cfafe97d9114bce541bb84e82b897cf8 (patch)
treea6d3d5ac4692d0df17ead73509ca4068d827aa36 /src/comp
parentc88fc06b40c8f950ea2335e80bad0bdfd878898e (diff)
downloadrust-d2bdfe36cfafe97d9114bce541bb84e82b897cf8.tar.gz
rust-d2bdfe36cfafe97d9114bce541bb84e82b897cf8.zip
rustc: Don't inline free glue
Diffstat (limited to 'src/comp')
-rw-r--r--src/comp/middle/trans.rs9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs
index a7c7b5544b6..d2f5416df40 100644
--- a/src/comp/middle/trans.rs
+++ b/src/comp/middle/trans.rs
@@ -1812,6 +1812,10 @@ fn declare_tydesc(&@local_ctxt cx, &ty::t t,
                                          "cmp");
     auto ccx = cx.ccx;
 
+    // Don't inline free glue; it's cold.
+    llvm::LLVMAddFunctionAttr(free_glue, lib::llvm::LLVMNoInlineAttribute as
+                              lib::llvm::llvm::Attribute);
+
     auto llsize;
     auto llalign;
     if (!ty::type_has_dynamic_size(ccx.tcx, t)) {
@@ -3000,6 +3004,11 @@ fn lazily_emit_tydesc_glue(&@block_ctxt cx, int field,
                             declare_generic_glue(lcx, ti.ty,
                                                  T_glue_fn(lcx.ccx.tn),
                                                  "free");
+                        // Don't inline free glue; it's cold.
+                        llvm::LLVMAddFunctionAttr(glue_fn,
+                            lib::llvm::LLVMNoInlineAttribute as
+                            lib::llvm::llvm::Attribute);
+
                         ti.free_glue = some[ValueRef](glue_fn);
                         auto dg = make_free_glue;
                         make_generic_glue(lcx, ti.ty, glue_fn,