|
1 | | -use crate::back::write::{ |
2 | | - self, save_temp_bitcode, to_llvm_opt_settings, with_llvm_pmb, DiagnosticHandlers, |
3 | | -}; |
4 | | -use crate::llvm::{self, build_string, False, True}; |
5 | | -use crate::{llvm_util, LlvmCodegenBackend, ModuleLlvm}; |
| 1 | +use crate::back::write::{self, save_temp_bitcode, DiagnosticHandlers}; |
| 2 | +use crate::llvm::{self, build_string}; |
| 3 | +use crate::{LlvmCodegenBackend, ModuleLlvm}; |
6 | 4 | use object::read::archive::ArchiveFile; |
7 | 5 | use rustc_codegen_ssa::back::lto::{LtoModuleCodegen, SerializedModule, ThinModule, ThinShared}; |
8 | 6 | use rustc_codegen_ssa::back::symbol_export; |
@@ -597,61 +595,9 @@ pub(crate) fn run_pass_manager( |
597 | 595 | 1, |
598 | 596 | ); |
599 | 597 | } |
600 | | - if llvm_util::should_use_new_llvm_pass_manager( |
601 | | - &config.new_llvm_pass_manager, |
602 | | - &cgcx.target_arch, |
603 | | - ) { |
604 | | - let opt_stage = if thin { llvm::OptStage::ThinLTO } else { llvm::OptStage::FatLTO }; |
605 | | - let opt_level = config.opt_level.unwrap_or(config::OptLevel::No); |
606 | | - write::optimize_with_new_llvm_pass_manager( |
607 | | - cgcx, |
608 | | - diag_handler, |
609 | | - module, |
610 | | - config, |
611 | | - opt_level, |
612 | | - opt_stage, |
613 | | - )?; |
614 | | - debug!("lto done"); |
615 | | - return Ok(()); |
616 | | - } |
617 | | - |
618 | | - let pm = llvm::LLVMCreatePassManager(); |
619 | | - llvm::LLVMAddAnalysisPasses(module.module_llvm.tm, pm); |
620 | | - |
621 | | - if config.verify_llvm_ir { |
622 | | - let pass = llvm::LLVMRustFindAndCreatePass("verify\0".as_ptr().cast()); |
623 | | - llvm::LLVMRustAddPass(pm, pass.unwrap()); |
624 | | - } |
625 | | - |
626 | | - let opt_level = config |
627 | | - .opt_level |
628 | | - .map(|x| to_llvm_opt_settings(x).0) |
629 | | - .unwrap_or(llvm::CodeGenOptLevel::None); |
630 | | - with_llvm_pmb(module.module_llvm.llmod(), config, opt_level, false, &mut |b| { |
631 | | - if thin { |
632 | | - llvm::LLVMRustPassManagerBuilderPopulateThinLTOPassManager(b, pm); |
633 | | - } else { |
634 | | - llvm::LLVMRustPassManagerBuilderPopulateLTOPassManager( |
635 | | - b, pm, /* Internalize = */ False, /* RunInliner = */ True, |
636 | | - ); |
637 | | - } |
638 | | - }); |
639 | | - |
640 | | - // We always generate bitcode through ThinLTOBuffers, |
641 | | - // which do not support anonymous globals |
642 | | - if config.bitcode_needed() { |
643 | | - let pass = llvm::LLVMRustFindAndCreatePass("name-anon-globals\0".as_ptr().cast()); |
644 | | - llvm::LLVMRustAddPass(pm, pass.unwrap()); |
645 | | - } |
646 | | - |
647 | | - if config.verify_llvm_ir { |
648 | | - let pass = llvm::LLVMRustFindAndCreatePass("verify\0".as_ptr().cast()); |
649 | | - llvm::LLVMRustAddPass(pm, pass.unwrap()); |
650 | | - } |
651 | | - |
652 | | - llvm::LLVMRunPassManager(pm, module.module_llvm.llmod()); |
653 | | - |
654 | | - llvm::LLVMDisposePassManager(pm); |
| 598 | + let opt_stage = if thin { llvm::OptStage::ThinLTO } else { llvm::OptStage::FatLTO }; |
| 599 | + let opt_level = config.opt_level.unwrap_or(config::OptLevel::No); |
| 600 | + write::llvm_optimize(cgcx, diag_handler, module, config, opt_level, opt_stage)?; |
655 | 601 | } |
656 | 602 | debug!("lto done"); |
657 | 603 | Ok(()) |
|
0 commit comments