Skip to content

Commit 54f0fae

Browse files
committed
change enable_autodiff_settngs args + call enable_autodiff_settings from LlvmCodegenBackend::init
1 parent 8444294 commit 54f0fae

File tree

3 files changed

+16
-12
lines changed

3 files changed

+16
-12
lines changed

compiler/rustc_codegen_llvm/src/back/lto.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -528,10 +528,14 @@ fn thin_lto(
528528
}
529529
}
530530

531-
fn enable_autodiff_settings(cgcx: &CodegenContext<LlvmCodegenBackend>, ad: &[config::AutoDiff]) {
531+
#[cfg(feature = "llvm_enzyme")]
532+
pub(crate) fn enable_autodiff_settings(
533+
sysroot: &rustc_session::config::Sysroot,
534+
ad: &[config::AutoDiff],
535+
) {
532536
// Initialize Enzyme if not already done (idempotent due to OnceLock)
533537
// This ensures it works even if LlvmCodegenBackend::init() didn't run it
534-
let mut enzyme = llvm::EnzymeWrapper::get_or_init(&cgcx.sysroot);
538+
let mut enzyme = llvm::EnzymeWrapper::get_or_init(sysroot);
535539

536540
for val in ad {
537541
// We intentionally don't use a wildcard, to not forget handling anything new.
@@ -612,10 +616,6 @@ pub(crate) fn run_pass_manager(
612616
if enable_ad { write::AutodiffStage::DuringAD } else { write::AutodiffStage::PostAD }
613617
};
614618

615-
if enable_ad {
616-
enable_autodiff_settings(&cgcx, &config.autodiff);
617-
}
618-
619619
unsafe {
620620
write::llvm_optimize(cgcx, dcx, module, None, config, opt_level, opt_stage, stage);
621621
}

compiler/rustc_codegen_llvm/src/lib.rs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ use rustc_middle::dep_graph::{WorkProduct, WorkProductId};
4141
use rustc_middle::ty::TyCtxt;
4242
use rustc_middle::util::Providers;
4343
use rustc_session::Session;
44-
use rustc_session::config::{AutoDiff, OptLevel, OutputFilenames, PrintKind, PrintRequest};
44+
use rustc_session::config::{OptLevel, OutputFilenames, PrintKind, PrintRequest};
4545
use rustc_span::Symbol;
4646
use rustc_target::spec::{RelocModel, TlsModel};
4747

@@ -241,10 +241,15 @@ impl CodegenBackend for LlvmCodegenBackend {
241241
fn init(&self, sess: &Session) {
242242
llvm_util::init(sess); // Make sure llvm is inited
243243

244-
if sess.opts.unstable_opts.autodiff.contains(&AutoDiff::Enable) {
245-
#[cfg(feature = "llvm_enzyme")]
246-
{
247-
drop(llvm::EnzymeWrapper::get_or_init(&sess.opts.sysroot));
244+
#[cfg(feature = "llvm_enzyme")]
245+
{
246+
use rustc_session::config::AutoDiff;
247+
if sess.opts.unstable_opts.autodiff.contains(&AutoDiff::Enable) {
248+
{
249+
use crate::back::lto::enable_autodiff_settings;
250+
251+
enable_autodiff_settings(&sess.opts.sysroot, &sess.opts.unstable_opts.autodiff);
252+
}
248253
}
249254
}
250255
}

compiler/rustc_codegen_llvm/src/typetree.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,6 @@ pub(crate) fn add_tt<'ll>(
120120
_llcx: &'ll llvm::Context,
121121
_fn_def: &'ll Value,
122122
_tt: FncTree,
123-
_sysroot: &rustc_session::config::Sysroot,
124123
) {
125124
unimplemented!()
126125
}

0 commit comments

Comments
 (0)