about summary refs log tree commit diff
path: root/src/librustc_codegen_llvm/attributes.rs
diff options
context:
space:
mode:
authorSimonas Kazlauskas <git@kazlauskas.me>2019-01-19 00:37:52 +0200
committerSimonas Kazlauskas <git@kazlauskas.me>2019-01-25 19:20:38 +0200
commitce289c6c9911c7ea55b7f30b125d3c38ed359da4 (patch)
treef69e5e7e9233b1afb5cd865009d14ff62a4ab9ed /src/librustc_codegen_llvm/attributes.rs
parent89e34d3e32bcb8bc52f3b9deeae7034d7f045388 (diff)
downloadrust-ce289c6c9911c7ea55b7f30b125d3c38ed359da4.tar.gz
rust-ce289c6c9911c7ea55b7f30b125d3c38ed359da4.zip
Resolve breakage
Diffstat (limited to 'src/librustc_codegen_llvm/attributes.rs')
-rw-r--r--src/librustc_codegen_llvm/attributes.rs41
1 files changed, 23 insertions, 18 deletions
diff --git a/src/librustc_codegen_llvm/attributes.rs b/src/librustc_codegen_llvm/attributes.rs
index a7d4f910f7a..e6bc7bca46b 100644
--- a/src/librustc_codegen_llvm/attributes.rs
+++ b/src/librustc_codegen_llvm/attributes.rs
@@ -144,6 +144,28 @@ pub fn non_lazy_bind(sess: &Session, llfn: &'ll Value) {
     }
 }
 
+pub(crate) fn default_optimisation_attrs(sess: &Session, llfn: &'ll Value) {
+    match sess.opts.optimize {
+        OptLevel::Size => {
+            llvm::Attribute::MinSize.unapply_llfn(Function, llfn);
+            llvm::Attribute::OptimizeForSize.apply_llfn(Function, llfn);
+            llvm::Attribute::OptimizeNone.unapply_llfn(Function, llfn);
+        },
+        OptLevel::SizeMin => {
+            llvm::Attribute::MinSize.apply_llfn(Function, llfn);
+            llvm::Attribute::OptimizeForSize.apply_llfn(Function, llfn);
+            llvm::Attribute::OptimizeNone.unapply_llfn(Function, llfn);
+        }
+        OptLevel::No => {
+            llvm::Attribute::MinSize.unapply_llfn(Function, llfn);
+            llvm::Attribute::OptimizeForSize.unapply_llfn(Function, llfn);
+            llvm::Attribute::OptimizeNone.unapply_llfn(Function, llfn);
+        }
+        _ => {}
+    }
+}
+
+
 /// Composite function which sets LLVM attributes for function depending on its AST (`#[attribute]`)
 /// attributes.
 pub fn from_fn_attrs(
@@ -157,24 +179,7 @@ pub fn from_fn_attrs(
 
     match codegen_fn_attrs.optimize {
         OptimizeAttr::None => {
-            match cx.tcx.sess.opts.optimize {
-                OptLevel::Size => {
-                    llvm::Attribute::MinSize.unapply_llfn(Function, llfn);
-                    llvm::Attribute::OptimizeForSize.apply_llfn(Function, llfn);
-                    llvm::Attribute::OptimizeNone.unapply_llfn(Function, llfn);
-                },
-                OptLevel::SizeMin => {
-                    llvm::Attribute::MinSize.apply_llfn(Function, llfn);
-                    llvm::Attribute::OptimizeForSize.apply_llfn(Function, llfn);
-                    llvm::Attribute::OptimizeNone.unapply_llfn(Function, llfn);
-                }
-                OptLevel::No => {
-                    llvm::Attribute::MinSize.unapply_llfn(Function, llfn);
-                    llvm::Attribute::OptimizeForSize.unapply_llfn(Function, llfn);
-                    llvm::Attribute::OptimizeNone.unapply_llfn(Function, llfn);
-                }
-                _ => {}
-            }
+            default_optimisation_attrs(cx.tcx.sess, llfn);
         }
         OptimizeAttr::Speed => {
             llvm::Attribute::MinSize.unapply_llfn(Function, llfn);