Avoid an unnecessary use of SmallStr
.
I don't know why `SmallStr` was used here; some ad hoc profiling showed this code is not that hot, the string is usually empty, and when it's not empty it's usually very short. However, the use of a `SmallStr<1024>` does result in 1024 byte `memcpy` call on each execution, which shows up when I do `memcpy` profiling. So using a normal string makes the code both simpler and very slightly faster.
This commit is contained in:
parent
45fcd1d0c5
commit
de1914af34
@ -1,7 +1,6 @@
|
|||||||
//! Set and unset common attributes on LLVM values.
|
//! Set and unset common attributes on LLVM values.
|
||||||
|
|
||||||
use rustc_codegen_ssa::traits::*;
|
use rustc_codegen_ssa::traits::*;
|
||||||
use rustc_data_structures::small_str::SmallStr;
|
|
||||||
use rustc_hir::def_id::DefId;
|
use rustc_hir::def_id::DefId;
|
||||||
use rustc_middle::middle::codegen_fn_attrs::CodegenFnAttrFlags;
|
use rustc_middle::middle::codegen_fn_attrs::CodegenFnAttrFlags;
|
||||||
use rustc_middle::ty::{self, TyCtxt};
|
use rustc_middle::ty::{self, TyCtxt};
|
||||||
@ -481,8 +480,8 @@ pub fn from_fn_attrs<'ll, 'tcx>(
|
|||||||
|
|
||||||
let global_features = cx.tcx.global_backend_features(()).iter().map(|s| s.as_str());
|
let global_features = cx.tcx.global_backend_features(()).iter().map(|s| s.as_str());
|
||||||
let function_features = function_features.iter().map(|s| s.as_str());
|
let function_features = function_features.iter().map(|s| s.as_str());
|
||||||
let target_features =
|
let target_features: String =
|
||||||
global_features.chain(function_features).intersperse(",").collect::<SmallStr<1024>>();
|
global_features.chain(function_features).intersperse(",").collect();
|
||||||
if !target_features.is_empty() {
|
if !target_features.is_empty() {
|
||||||
to_add.push(llvm::CreateAttrStringValue(cx.llcx, "target-features", &target_features));
|
to_add.push(llvm::CreateAttrStringValue(cx.llcx, "target-features", &target_features));
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user