Default to disabling the new pass manager for the s390x targets.
This commit is contained in:
parent
44995f7afb
commit
4593d78e96
2 changed files with 13 additions and 4 deletions
|
@ -596,7 +596,7 @@ pub(crate) fn run_pass_manager(
|
|||
// tools/lto/LTOCodeGenerator.cpp
|
||||
debug!("running the pass manager");
|
||||
unsafe {
|
||||
if write::should_use_new_llvm_pass_manager(config) {
|
||||
if write::should_use_new_llvm_pass_manager(cgcx, config) {
|
||||
let opt_stage = if thin { llvm::OptStage::ThinLTO } else { llvm::OptStage::FatLTO };
|
||||
let opt_level = config.opt_level.unwrap_or(config::OptLevel::No);
|
||||
write::optimize_with_new_llvm_pass_manager(
|
||||
|
|
|
@ -377,10 +377,19 @@ fn get_pgo_sample_use_path(config: &ModuleConfig) -> Option<CString> {
|
|||
.map(|path_buf| CString::new(path_buf.to_string_lossy().as_bytes()).unwrap())
|
||||
}
|
||||
|
||||
pub(crate) fn should_use_new_llvm_pass_manager(config: &ModuleConfig) -> bool {
|
||||
pub(crate) fn should_use_new_llvm_pass_manager(
|
||||
cgcx: &CodegenContext<LlvmCodegenBackend>,
|
||||
config: &ModuleConfig,
|
||||
) -> bool {
|
||||
// The new pass manager is enabled by default for LLVM >= 13.
|
||||
// This matches Clang, which also enables it since Clang 13.
|
||||
config.new_llvm_pass_manager.unwrap_or_else(|| llvm_util::get_version() >= (13, 0, 0))
|
||||
|
||||
// FIXME: There are some perf issues with the new pass manager
|
||||
// when targeting s390x, so it is temporarily disabled for that
|
||||
// arch, see https://github.com/rust-lang/rust/issues/89609
|
||||
config
|
||||
.new_llvm_pass_manager
|
||||
.unwrap_or_else(|| cgcx.target_arch != "s390x" && llvm_util::get_version() >= (13, 0, 0))
|
||||
}
|
||||
|
||||
pub(crate) unsafe fn optimize_with_new_llvm_pass_manager(
|
||||
|
@ -482,7 +491,7 @@ pub(crate) unsafe fn optimize(
|
|||
}
|
||||
|
||||
if let Some(opt_level) = config.opt_level {
|
||||
if should_use_new_llvm_pass_manager(config) {
|
||||
if should_use_new_llvm_pass_manager(cgcx, config) {
|
||||
let opt_stage = match cgcx.lto {
|
||||
Lto::Fat => llvm::OptStage::PreLinkFatLTO,
|
||||
Lto::Thin | Lto::ThinLocal => llvm::OptStage::PreLinkThinLTO,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue