Rollup merge of #78848 - DevJPM:ci-llvm-9, r=nikic
Bump minimal supported LLVM version to 9
This bumps the minimal tested llvm version to 9.
This should enable supporting newer LLVM features (and CPU extensions).
This was motived by #78361 having to drop features because of LLVM 8 not supporting certain CPU extensions yet.
This was declared relatively uncontroversial on [Zulip](215957859
).
Paging ````@eddyb```` because there was a comment in the [dockerfile](https://github.com/rust-lang/rust/blob/master/src/ci/docker/host-x86_64/x86_64-gnu-llvm-8/Dockerfile#L42) describing a hack (which I don't quite understand) which was also blocked by not having LLVM 9.
This commit is contained in:
commit
ae7020fcb4
13 changed files with 15 additions and 100 deletions
|
@ -144,25 +144,6 @@ fn set_probestack(cx: &CodegenCx<'ll, '_>, llfn: &'ll Value) {
|
|||
);
|
||||
}
|
||||
|
||||
fn translate_obsolete_target_features(feature: &str) -> &str {
|
||||
const LLVM9_FEATURE_CHANGES: &[(&str, &str)] =
|
||||
&[("+fp-only-sp", "-fp64"), ("-fp-only-sp", "+fp64"), ("+d16", "-d32"), ("-d16", "+d32")];
|
||||
if llvm_util::get_major_version() >= 9 {
|
||||
for &(old, new) in LLVM9_FEATURE_CHANGES {
|
||||
if feature == old {
|
||||
return new;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for &(old, new) in LLVM9_FEATURE_CHANGES {
|
||||
if feature == new {
|
||||
return old;
|
||||
}
|
||||
}
|
||||
}
|
||||
feature
|
||||
}
|
||||
|
||||
pub fn llvm_target_features(sess: &Session) -> impl Iterator<Item = &str> {
|
||||
const RUSTC_SPECIFIC_FEATURES: &[&str] = &["crt-static"];
|
||||
|
||||
|
@ -172,12 +153,7 @@ pub fn llvm_target_features(sess: &Session) -> impl Iterator<Item = &str> {
|
|||
.target_feature
|
||||
.split(',')
|
||||
.filter(|f| !RUSTC_SPECIFIC_FEATURES.iter().any(|s| f.contains(s)));
|
||||
sess.target
|
||||
.features
|
||||
.split(',')
|
||||
.chain(cmdline)
|
||||
.filter(|l| !l.is_empty())
|
||||
.map(translate_obsolete_target_features)
|
||||
sess.target.features.split(',').chain(cmdline).filter(|l| !l.is_empty())
|
||||
}
|
||||
|
||||
pub fn apply_target_cpu_attr(cx: &CodegenCx<'ll, '_>, llfn: &'ll Value) {
|
||||
|
|
|
@ -377,11 +377,6 @@ fn get_pgo_use_path(config: &ModuleConfig) -> Option<CString> {
|
|||
}
|
||||
|
||||
pub(crate) fn should_use_new_llvm_pass_manager(config: &ModuleConfig) -> bool {
|
||||
// We only support the new pass manager starting with LLVM 9.
|
||||
if llvm_util::get_major_version() < 9 {
|
||||
return false;
|
||||
}
|
||||
|
||||
// The new pass manager is disabled by default.
|
||||
config.new_llvm_pass_manager
|
||||
}
|
||||
|
|
|
@ -100,11 +100,6 @@ fn to_llvm_tls_model(tls_model: TlsModel) -> llvm::ThreadLocalMode {
|
|||
}
|
||||
}
|
||||
|
||||
fn strip_function_ptr_alignment(data_layout: String) -> String {
|
||||
// FIXME: Make this more general.
|
||||
data_layout.replace("-Fi8-", "-")
|
||||
}
|
||||
|
||||
fn strip_x86_address_spaces(data_layout: String) -> String {
|
||||
data_layout.replace("-p270:32:32-p271:32:32-p272:64:64-", "-")
|
||||
}
|
||||
|
@ -119,9 +114,6 @@ pub unsafe fn create_module(
|
|||
let llmod = llvm::LLVMModuleCreateWithNameInContext(mod_name.as_ptr(), llcx);
|
||||
|
||||
let mut target_data_layout = sess.target.data_layout.clone();
|
||||
if llvm_util::get_major_version() < 9 {
|
||||
target_data_layout = strip_function_ptr_alignment(target_data_layout);
|
||||
}
|
||||
if llvm_util::get_major_version() < 10
|
||||
&& (sess.target.arch == "x86" || sess.target.arch == "x86_64")
|
||||
{
|
||||
|
|
|
@ -104,7 +104,7 @@ unsafe fn configure_llvm(sess: &Session) {
|
|||
}
|
||||
}
|
||||
|
||||
if sess.opts.debugging_opts.llvm_time_trace && get_major_version() >= 9 {
|
||||
if sess.opts.debugging_opts.llvm_time_trace {
|
||||
// time-trace is not thread safe and running it in parallel will cause seg faults.
|
||||
if !sess.opts.debugging_opts.no_parallel_llvm {
|
||||
bug!("`-Z llvm-time-trace` requires `-Z no-parallel-llvm")
|
||||
|
@ -122,10 +122,8 @@ unsafe fn configure_llvm(sess: &Session) {
|
|||
|
||||
pub fn time_trace_profiler_finish(file_name: &str) {
|
||||
unsafe {
|
||||
if get_major_version() >= 9 {
|
||||
let file_name = CString::new(file_name).unwrap();
|
||||
llvm::LLVMTimeTraceProfilerFinish(file_name.as_ptr());
|
||||
}
|
||||
let file_name = CString::new(file_name).unwrap();
|
||||
llvm::LLVMTimeTraceProfilerFinish(file_name.as_ptr());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue