Skip to content

Commit 123b024

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

File tree

2 files changed

+16
-9
lines changed

2 files changed

+16
-9
lines changed

compiler/rustc_codegen_llvm/src/back/lto.rs

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

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

536539
for val in ad {
537540
// We intentionally don't use a wildcard, to not forget handling anything new.
@@ -612,9 +615,9 @@ pub(crate) fn run_pass_manager(
612615
if enable_ad { write::AutodiffStage::DuringAD } else { write::AutodiffStage::PostAD }
613616
};
614617

615-
if enable_ad {
616-
enable_autodiff_settings(&cgcx, &config.autodiff);
617-
}
618+
// if enable_ad {
619+
// enable_autodiff_settings(&cgcx, &config.autodiff);
620+
// }
618621

619622
unsafe {
620623
write::llvm_optimize(cgcx, dcx, module, None, config, opt_level, opt_stage, stage);

compiler/rustc_codegen_llvm/src/lib.rs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -241,10 +241,14 @@ 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+
if sess.opts.unstable_opts.autodiff.contains(&AutoDiff::Enable) {
247+
{
248+
use crate::back::lto::enable_autodiff_settings;
249+
250+
enable_autodiff_settings(&sess.opts.sysroot, &sess.opts.unstable_opts.autodiff);
251+
}
248252
}
249253
}
250254
}

0 commit comments

Comments
 (0)