@@ -144,6 +144,28 @@ pub fn non_lazy_bind(sess: &Session, llfn: &'ll Value) {
144144 }
145145}
146146
147+ pub ( crate ) fn default_optimisation_attrs ( sess : & Session , llfn : & ' ll Value ) {
148+ match sess. opts . optimize {
149+ OptLevel :: Size => {
150+ llvm:: Attribute :: MinSize . unapply_llfn ( Function , llfn) ;
151+ llvm:: Attribute :: OptimizeForSize . apply_llfn ( Function , llfn) ;
152+ llvm:: Attribute :: OptimizeNone . unapply_llfn ( Function , llfn) ;
153+ } ,
154+ OptLevel :: SizeMin => {
155+ llvm:: Attribute :: MinSize . apply_llfn ( Function , llfn) ;
156+ llvm:: Attribute :: OptimizeForSize . apply_llfn ( Function , llfn) ;
157+ llvm:: Attribute :: OptimizeNone . unapply_llfn ( Function , llfn) ;
158+ }
159+ OptLevel :: No => {
160+ llvm:: Attribute :: MinSize . unapply_llfn ( Function , llfn) ;
161+ llvm:: Attribute :: OptimizeForSize . unapply_llfn ( Function , llfn) ;
162+ llvm:: Attribute :: OptimizeNone . unapply_llfn ( Function , llfn) ;
163+ }
164+ _ => { }
165+ }
166+ }
167+
168+
147169/// Composite function which sets LLVM attributes for function depending on its AST (`#[attribute]`)
148170/// attributes.
149171pub fn from_fn_attrs (
@@ -157,24 +179,7 @@ pub fn from_fn_attrs(
157179
158180 match codegen_fn_attrs. optimize {
159181 OptimizeAttr :: None => {
160- match cx. tcx . sess . opts . optimize {
161- OptLevel :: Size => {
162- llvm:: Attribute :: MinSize . unapply_llfn ( Function , llfn) ;
163- llvm:: Attribute :: OptimizeForSize . apply_llfn ( Function , llfn) ;
164- llvm:: Attribute :: OptimizeNone . unapply_llfn ( Function , llfn) ;
165- } ,
166- OptLevel :: SizeMin => {
167- llvm:: Attribute :: MinSize . apply_llfn ( Function , llfn) ;
168- llvm:: Attribute :: OptimizeForSize . apply_llfn ( Function , llfn) ;
169- llvm:: Attribute :: OptimizeNone . unapply_llfn ( Function , llfn) ;
170- }
171- OptLevel :: No => {
172- llvm:: Attribute :: MinSize . unapply_llfn ( Function , llfn) ;
173- llvm:: Attribute :: OptimizeForSize . unapply_llfn ( Function , llfn) ;
174- llvm:: Attribute :: OptimizeNone . unapply_llfn ( Function , llfn) ;
175- }
176- _ => { }
177- }
182+ default_optimisation_attrs ( cx. tcx . sess , llfn) ;
178183 }
179184 OptimizeAttr :: Speed => {
180185 llvm:: Attribute :: MinSize . unapply_llfn ( Function , llfn) ;
0 commit comments