blob: c6e6192b7041f96651b145ffd8e0df9cb7475780 [file] [log] [blame]
From 6738434de3e4dacedeb330a5cf878e0a196be864 Mon Sep 17 00:00:00 2001
From: Bob Haarman <rust@inglorion.net>
Date: Fri, 10 Jun 2022 11:53:25 -0700
Subject: [PATCH] Make -Cpasses= only apply to pre-link optimization
This change causes passes specified in -Cpasses= to be applied
only during pre-link optimization, not during LTO. This avoids
such passes running multiple times, which they may not be
designed for.
Fixes https://github.com/rust-lang/rust/issues/97713
---
compiler/rustc_codegen_llvm/src/back/write.rs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/compiler/rustc_codegen_llvm/src/back/write.rs b/compiler/rustc_codegen_llvm/src/back/write.rs
index 99e30531c22..f456408ca3a 100644
--- a/compiler/rustc_codegen_llvm/src/back/write.rs
+++ b/compiler/rustc_codegen_llvm/src/back/write.rs
@@ -467,7 +467,7 @@ pub(crate) unsafe fn optimize_with_new_llvm_pass_manager(
let llvm_selfprofiler =
llvm_profiler.as_mut().map(|s| s as *mut _ as *mut c_void).unwrap_or(std::ptr::null_mut());
- let extra_passes = config.passes.join(",");
+ let extra_passes = if !is_lto { config.passes.join(",") } else { "".to_string() };
let llvm_plugins = config.llvm_plugins.join(",");
--
2.36.1.476.g0c4daa206d-goog