Skip to content

Commit ba81dbf

Browse files
committed
Don't set unnecessary module flag "LTOPostLink"
This module flag was an internal detail of LLVM's optimization passes, and all code involving it was removed in LLVM 17. <llvm/llvm-project@200cc95>
1 parent 2df8dbb commit ba81dbf

File tree

3 files changed

+3
-25
lines changed

3 files changed

+3
-25
lines changed

Diff for: compiler/rustc_codegen_llvm/src/back/lto.rs

+3-18
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ use tracing::{debug, info};
2525
use crate::back::write::{
2626
self, CodegenDiagnosticsStage, DiagnosticHandlers, bitcode_section_name, save_temp_bitcode,
2727
};
28-
use crate::common::AsCCharPtr;
2928
use crate::errors::{
3029
DynamicLinkingWithLTO, LlvmError, LtoBitcodeFromRlib, LtoDisallowed, LtoDylib, LtoProcMacro,
3130
};
@@ -602,23 +601,9 @@ pub(crate) fn run_pass_manager(
602601
// This code is based off the code found in llvm's LTO code generator:
603602
// llvm/lib/LTO/LTOCodeGenerator.cpp
604603
debug!("running the pass manager");
605-
unsafe {
606-
if !llvm::LLVMRustHasModuleFlag(
607-
module.module_llvm.llmod(),
608-
"LTOPostLink".as_c_char_ptr(),
609-
11,
610-
) {
611-
llvm::LLVMRustAddModuleFlagU32(
612-
module.module_llvm.llmod(),
613-
llvm::LLVMModFlagBehavior::Error,
614-
c"LTOPostLink".as_ptr(),
615-
1,
616-
);
617-
}
618-
let opt_stage = if thin { llvm::OptStage::ThinLTO } else { llvm::OptStage::FatLTO };
619-
let opt_level = config.opt_level.unwrap_or(config::OptLevel::No);
620-
write::llvm_optimize(cgcx, dcx, module, config, opt_level, opt_stage)?;
621-
}
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+
unsafe { write::llvm_optimize(cgcx, dcx, module, config, opt_level, opt_stage) }?;
622607
debug!("lto done");
623608
Ok(())
624609
}

Diff for: compiler/rustc_codegen_llvm/src/llvm/ffi.rs

-2
Original file line numberDiff line numberDiff line change
@@ -1842,8 +1842,6 @@ unsafe extern "C" {
18421842
value_len: size_t,
18431843
);
18441844

1845-
pub fn LLVMRustHasModuleFlag(M: &Module, name: *const c_char, len: size_t) -> bool;
1846-
18471845
pub fn LLVMRustDIBuilderCreate(M: &Module) -> &mut DIBuilder<'_>;
18481846

18491847
pub fn LLVMRustDIBuilderDispose<'a>(Builder: &'a mut DIBuilder<'a>);

Diff for: compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp

-5
Original file line numberDiff line numberDiff line change
@@ -867,11 +867,6 @@ extern "C" void LLVMRustAddModuleFlagString(
867867
MDString::get(unwrap(M)->getContext(), StringRef(Value, ValueLen)));
868868
}
869869

870-
extern "C" bool LLVMRustHasModuleFlag(LLVMModuleRef M, const char *Name,
871-
size_t Len) {
872-
return unwrap(M)->getModuleFlag(StringRef(Name, Len)) != nullptr;
873-
}
874-
875870
extern "C" void LLVMRustGlobalAddMetadata(LLVMValueRef Global, unsigned Kind,
876871
LLVMMetadataRef MD) {
877872
unwrap<GlobalObject>(Global)->addMetadata(Kind, *unwrap<MDNode>(MD));

0 commit comments

Comments
 (0)