Expose unstable llvm14-builtins-abi target feature for cfg use
This commit is contained in:
parent
200aa5c713
commit
0605a4122f
@ -217,24 +217,32 @@ pub fn check_tied_features(
|
|||||||
|
|
||||||
pub fn target_features(sess: &Session) -> Vec<Symbol> {
|
pub fn target_features(sess: &Session) -> Vec<Symbol> {
|
||||||
let target_machine = create_informational_target_machine(sess);
|
let target_machine = create_informational_target_machine(sess);
|
||||||
supported_target_features(sess)
|
let mut features: Vec<Symbol> =
|
||||||
.iter()
|
supported_target_features(sess)
|
||||||
.filter_map(
|
.iter()
|
||||||
|&(feature, gate)| {
|
.filter_map(|&(feature, gate)| {
|
||||||
if sess.is_nightly_build() || gate.is_none() { Some(feature) } else { None }
|
if sess.is_nightly_build() || gate.is_none() { Some(feature) } else { None }
|
||||||
},
|
})
|
||||||
)
|
.filter(|feature| {
|
||||||
.filter(|feature| {
|
for llvm_feature in to_llvm_feature(sess, feature) {
|
||||||
for llvm_feature in to_llvm_feature(sess, feature) {
|
let cstr = CString::new(llvm_feature).unwrap();
|
||||||
let cstr = CString::new(llvm_feature).unwrap();
|
if unsafe { llvm::LLVMRustHasFeature(target_machine, cstr.as_ptr()) } {
|
||||||
if unsafe { llvm::LLVMRustHasFeature(target_machine, cstr.as_ptr()) } {
|
return true;
|
||||||
return true;
|
}
|
||||||
}
|
}
|
||||||
}
|
false
|
||||||
false
|
})
|
||||||
})
|
.map(|feature| Symbol::intern(feature))
|
||||||
.map(|feature| Symbol::intern(feature))
|
.collect();
|
||||||
.collect()
|
|
||||||
|
// LLVM 14 changed the ABI for i128 arguments to __float/__fix builtins on Win64
|
||||||
|
// (see https://reviews.llvm.org/D110413). This unstable target feature is intended for use
|
||||||
|
// by compiler-builtins, to export the builtins with the expected, LLVM-version-dependent ABI.
|
||||||
|
// The target feature can be dropped once we no longer support older LLVM versions.
|
||||||
|
if sess.is_nightly_build() && get_version() >= (14, 0, 0) {
|
||||||
|
features.push(Symbol::intern("llvm14-builtins-abi"));
|
||||||
|
}
|
||||||
|
features
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn print_version() {
|
pub fn print_version() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user