mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 14:55:26 +00:00
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.
<200cc952a2
>
This commit is contained in:
parent
2df8dbb1b3
commit
ba81dbf3c6
@ -25,7 +25,6 @@ use tracing::{debug, info};
|
|||||||
use crate::back::write::{
|
use crate::back::write::{
|
||||||
self, CodegenDiagnosticsStage, DiagnosticHandlers, bitcode_section_name, save_temp_bitcode,
|
self, CodegenDiagnosticsStage, DiagnosticHandlers, bitcode_section_name, save_temp_bitcode,
|
||||||
};
|
};
|
||||||
use crate::common::AsCCharPtr;
|
|
||||||
use crate::errors::{
|
use crate::errors::{
|
||||||
DynamicLinkingWithLTO, LlvmError, LtoBitcodeFromRlib, LtoDisallowed, LtoDylib, LtoProcMacro,
|
DynamicLinkingWithLTO, LlvmError, LtoBitcodeFromRlib, LtoDisallowed, LtoDylib, LtoProcMacro,
|
||||||
};
|
};
|
||||||
@ -602,23 +601,9 @@ pub(crate) fn run_pass_manager(
|
|||||||
// This code is based off the code found in llvm's LTO code generator:
|
// This code is based off the code found in llvm's LTO code generator:
|
||||||
// llvm/lib/LTO/LTOCodeGenerator.cpp
|
// llvm/lib/LTO/LTOCodeGenerator.cpp
|
||||||
debug!("running the pass manager");
|
debug!("running the pass manager");
|
||||||
unsafe {
|
|
||||||
if !llvm::LLVMRustHasModuleFlag(
|
|
||||||
module.module_llvm.llmod(),
|
|
||||||
"LTOPostLink".as_c_char_ptr(),
|
|
||||||
11,
|
|
||||||
) {
|
|
||||||
llvm::LLVMRustAddModuleFlagU32(
|
|
||||||
module.module_llvm.llmod(),
|
|
||||||
llvm::LLVMModFlagBehavior::Error,
|
|
||||||
c"LTOPostLink".as_ptr(),
|
|
||||||
1,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
let opt_stage = if thin { llvm::OptStage::ThinLTO } else { llvm::OptStage::FatLTO };
|
let opt_stage = if thin { llvm::OptStage::ThinLTO } else { llvm::OptStage::FatLTO };
|
||||||
let opt_level = config.opt_level.unwrap_or(config::OptLevel::No);
|
let opt_level = config.opt_level.unwrap_or(config::OptLevel::No);
|
||||||
write::llvm_optimize(cgcx, dcx, module, config, opt_level, opt_stage)?;
|
unsafe { write::llvm_optimize(cgcx, dcx, module, config, opt_level, opt_stage) }?;
|
||||||
}
|
|
||||||
debug!("lto done");
|
debug!("lto done");
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
@ -1842,8 +1842,6 @@ unsafe extern "C" {
|
|||||||
value_len: size_t,
|
value_len: size_t,
|
||||||
);
|
);
|
||||||
|
|
||||||
pub fn LLVMRustHasModuleFlag(M: &Module, name: *const c_char, len: size_t) -> bool;
|
|
||||||
|
|
||||||
pub fn LLVMRustDIBuilderCreate(M: &Module) -> &mut DIBuilder<'_>;
|
pub fn LLVMRustDIBuilderCreate(M: &Module) -> &mut DIBuilder<'_>;
|
||||||
|
|
||||||
pub fn LLVMRustDIBuilderDispose<'a>(Builder: &'a mut DIBuilder<'a>);
|
pub fn LLVMRustDIBuilderDispose<'a>(Builder: &'a mut DIBuilder<'a>);
|
||||||
|
@ -867,11 +867,6 @@ extern "C" void LLVMRustAddModuleFlagString(
|
|||||||
MDString::get(unwrap(M)->getContext(), StringRef(Value, ValueLen)));
|
MDString::get(unwrap(M)->getContext(), StringRef(Value, ValueLen)));
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" bool LLVMRustHasModuleFlag(LLVMModuleRef M, const char *Name,
|
|
||||||
size_t Len) {
|
|
||||||
return unwrap(M)->getModuleFlag(StringRef(Name, Len)) != nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
extern "C" void LLVMRustGlobalAddMetadata(LLVMValueRef Global, unsigned Kind,
|
extern "C" void LLVMRustGlobalAddMetadata(LLVMValueRef Global, unsigned Kind,
|
||||||
LLVMMetadataRef MD) {
|
LLVMMetadataRef MD) {
|
||||||
unwrap<GlobalObject>(Global)->addMetadata(Kind, *unwrap<MDNode>(MD));
|
unwrap<GlobalObject>(Global)->addMetadata(Kind, *unwrap<MDNode>(MD));
|
||||||
|
Loading…
Reference in New Issue
Block a user