about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorDaniel Micay <danielmicay@gmail.com>2013-02-14 14:48:15 -0500
committerDaniel Micay <danielmicay@gmail.com>2013-02-14 14:48:34 -0500
commit762ce323c03275a3a9c233ef1788dc6f5e631ce4 (patch)
tree429a5d45cbc462740106cd1063c88ba62956cfd1 /src
parent36edd256397d250ce35204ba1a0954609c25a20a (diff)
stop applying noinline to glue code
Diffstat (limited to 'src')
-rw-r--r--src/librustc/middle/trans/base.rs11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/librustc/middle/trans/base.rs b/src/librustc/middle/trans/base.rs
index 9a82bb53e01..8d6d299c92f 100644
--- a/src/librustc/middle/trans/base.rs
+++ b/src/librustc/middle/trans/base.rs
@@ -382,6 +382,15 @@ pub fn get_tydesc(ccx: @crate_ctxt, t: ty::t) -> @mut tydesc_info {
     }
 }
 
+pub fn set_optimize_for_size(f: ValueRef) {
+    unsafe {
+        llvm::LLVMAddFunctionAttr(f,
+                                  lib::llvm::OptimizeForSizeAttribute
+                                  as c_ulonglong,
+                                  0u as c_ulonglong);
+    }
+}
+
 pub fn set_no_inline(f: ValueRef) {
     unsafe {
         llvm::LLVMAddFunctionAttr(f,
@@ -440,7 +449,7 @@ pub fn set_custom_stack_growth_fn(f: ValueRef) {
 
 pub fn set_glue_inlining(f: ValueRef, t: ty::t) {
     if ty::type_is_structural(t) {
-        set_no_inline(f);
+        set_optimize_for_size(f);
     } else { set_always_inline(f); }
 }