mirror of
https://github.com/rust-lang/rust.git
synced 2025-04-15 05:26:47 +00:00
Auto merge of #133499 - nikic:no-backend-verify, r=Mark-Simulacrum
Respect verify-llvm-ir option in the backend We are currently unconditionally verifying the LLVM IR in the backend (twice), ignoring the value of the verify-llvm-ir option. This has substantial compile-time impact for debug builds.
This commit is contained in:
commit
8ac313bdbe
@ -61,6 +61,7 @@ fn write_output_file<'ll>(
|
||||
dwo_output: Option<&Path>,
|
||||
file_type: llvm::FileType,
|
||||
self_profiler_ref: &SelfProfilerRef,
|
||||
verify_llvm_ir: bool,
|
||||
) -> Result<(), FatalError> {
|
||||
debug!("write_output_file output={:?} dwo_output={:?}", output, dwo_output);
|
||||
unsafe {
|
||||
@ -79,6 +80,7 @@ fn write_output_file<'ll>(
|
||||
output_c.as_ptr(),
|
||||
dwo_output_ptr,
|
||||
file_type,
|
||||
verify_llvm_ir,
|
||||
);
|
||||
|
||||
// Record artifact sizes for self-profiling
|
||||
@ -840,6 +842,7 @@ pub(crate) unsafe fn codegen(
|
||||
None,
|
||||
llvm::FileType::AssemblyFile,
|
||||
&cgcx.prof,
|
||||
config.verify_llvm_ir,
|
||||
)
|
||||
})?;
|
||||
}
|
||||
@ -877,6 +880,7 @@ pub(crate) unsafe fn codegen(
|
||||
dwo_out,
|
||||
llvm::FileType::ObjectFile,
|
||||
&cgcx.prof,
|
||||
config.verify_llvm_ir,
|
||||
)
|
||||
})?;
|
||||
}
|
||||
|
@ -2240,6 +2240,7 @@ unsafe extern "C" {
|
||||
Output: *const c_char,
|
||||
DwoOutput: *const c_char,
|
||||
FileType: FileType,
|
||||
VerifyIR: bool,
|
||||
) -> LLVMRustResult;
|
||||
pub fn LLVMRustOptimize<'a>(
|
||||
M: &'a Module,
|
||||
|
@ -552,7 +552,7 @@ static CodeGenFileType fromRust(LLVMRustFileType Type) {
|
||||
extern "C" LLVMRustResult
|
||||
LLVMRustWriteOutputFile(LLVMTargetMachineRef Target, LLVMPassManagerRef PMR,
|
||||
LLVMModuleRef M, const char *Path, const char *DwoPath,
|
||||
LLVMRustFileType RustFileType) {
|
||||
LLVMRustFileType RustFileType, bool VerifyIR) {
|
||||
llvm::legacy::PassManager *PM = unwrap<llvm::legacy::PassManager>(PMR);
|
||||
auto FileType = fromRust(RustFileType);
|
||||
|
||||
@ -577,10 +577,10 @@ LLVMRustWriteOutputFile(LLVMTargetMachineRef Target, LLVMPassManagerRef PMR,
|
||||
return LLVMRustResult::Failure;
|
||||
}
|
||||
auto DBOS = buffer_ostream(DOS);
|
||||
unwrap(Target)->addPassesToEmitFile(*PM, BOS, &DBOS, FileType, false);
|
||||
unwrap(Target)->addPassesToEmitFile(*PM, BOS, &DBOS, FileType, !VerifyIR);
|
||||
PM->run(*unwrap(M));
|
||||
} else {
|
||||
unwrap(Target)->addPassesToEmitFile(*PM, BOS, nullptr, FileType, false);
|
||||
unwrap(Target)->addPassesToEmitFile(*PM, BOS, nullptr, FileType, !VerifyIR);
|
||||
PM->run(*unwrap(M));
|
||||
}
|
||||
|
||||
|
@ -1,9 +0,0 @@
|
||||
//@ known-bug: #109681
|
||||
|
||||
#![crate_type="lib"]
|
||||
#![feature(linkage)]
|
||||
|
||||
#[linkage = "common"]
|
||||
pub static TEST3: bool = true;
|
||||
|
||||
fn main() {}
|
@ -1,4 +1,4 @@
|
||||
//@ compile-flags: -g -Copt-level=0
|
||||
//@ compile-flags: -g -Copt-level=0 -Z verify-llvm-ir
|
||||
//@ known-bug: #34127
|
||||
//@ only-x86_64
|
||||
|
||||
|
@ -2,6 +2,7 @@
|
||||
//@ failure-status: 101
|
||||
//@ known-bug: #109681
|
||||
//@ ignore-wasm32 this appears to SIGABRT on wasm, not fail cleanly
|
||||
//@ compile-flags: -Z verify-llvm-ir
|
||||
|
||||
// This test verifies that we continue to hit the LLVM error for common linkage with non-zero
|
||||
// initializers, since it generates invalid LLVM IR.
|
||||
|
Loading…
Reference in New Issue
Block a user