@@ -144,6 +144,28 @@ pub fn non_lazy_bind(sess: &Session, llfn: &'ll Value) {
144
144
}
145
145
}
146
146
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
+
147
169
/// Composite function which sets LLVM attributes for function depending on its AST (`#[attribute]`)
148
170
/// attributes.
149
171
pub fn from_fn_attrs (
@@ -157,24 +179,7 @@ pub fn from_fn_attrs(
157
179
158
180
match codegen_fn_attrs. optimize {
159
181
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) ;
178
183
}
179
184
OptimizeAttr :: Speed => {
180
185
llvm:: Attribute :: MinSize . unapply_llfn ( Function , llfn) ;
0 commit comments