From 199ef412c5ab80f4b1b5316de70b8f1e721c9648 Mon Sep 17 00:00:00 2001 From: Manuel Drehwald Date: Sat, 1 Feb 2025 20:27:14 -0500 Subject: [PATCH 1/2] test compile time fixes --- compiler/rustc_codegen_ssa/src/back/write.rs | 2 +- compiler/rustc_monomorphize/src/partitioning.rs | 14 +++++--------- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/compiler/rustc_codegen_ssa/src/back/write.rs b/compiler/rustc_codegen_ssa/src/back/write.rs index 914f2c21fa78c..ce2161a07ebf6 100644 --- a/compiler/rustc_codegen_ssa/src/back/write.rs +++ b/compiler/rustc_codegen_ssa/src/back/write.rs @@ -403,7 +403,7 @@ fn generate_lto_work( assert!(needs_thin_lto.is_empty()); let mut module = B::run_fat_lto(cgcx, needs_fat_lto, import_only_modules).unwrap_or_else(|e| e.raise()); - if cgcx.lto == Lto::Fat { + if cgcx.lto == Lto::Fat && !autodiff.is_empty() { let config = cgcx.config(ModuleKind::Regular); module = unsafe { module.autodiff(cgcx, autodiff, config).unwrap() }; } diff --git a/compiler/rustc_monomorphize/src/partitioning.rs b/compiler/rustc_monomorphize/src/partitioning.rs index c985ea04278d4..d0edd58def3fe 100644 --- a/compiler/rustc_monomorphize/src/partitioning.rs +++ b/compiler/rustc_monomorphize/src/partitioning.rs @@ -1179,23 +1179,19 @@ fn collect_and_partition_mono_items(tcx: TyCtxt<'_>, (): ()) -> MonoItemPartitio } } + let mut autodiff_mono_items: Vec<_> = vec![]; let mono_items: DefIdSet = items .iter() .filter_map(|mono_item| match *mono_item { - MonoItem::Fn(ref instance) => Some(instance.def_id()), + MonoItem::Fn(ref instance) => { + autodiff_mono_items.push((mono_item, instance)); + Some(instance.def_id()) + } MonoItem::Static(def_id) => Some(def_id), _ => None, }) .collect(); - let autodiff_mono_items: Vec<_> = items - .iter() - .filter_map(|item| match *item { - MonoItem::Fn(ref instance) => Some((item, instance)), - _ => None, - }) - .collect(); - let autodiff_items = autodiff::find_autodiff_source_functions(tcx, &usage_map, autodiff_mono_items); let autodiff_items = tcx.arena.alloc_from_iter(autodiff_items); From e47caa2810bc35655ca082836396e544436f5b54 Mon Sep 17 00:00:00 2001 From: Manuel Drehwald Date: Sun, 2 Feb 2025 05:13:53 -0500 Subject: [PATCH 2/2] run less code if cfg(llvm_enzyme) isn't used --- compiler/rustc_monomorphize/src/partitioning.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/compiler/rustc_monomorphize/src/partitioning.rs b/compiler/rustc_monomorphize/src/partitioning.rs index d0edd58def3fe..3ef061195da50 100644 --- a/compiler/rustc_monomorphize/src/partitioning.rs +++ b/compiler/rustc_monomorphize/src/partitioning.rs @@ -1179,11 +1179,15 @@ fn collect_and_partition_mono_items(tcx: TyCtxt<'_>, (): ()) -> MonoItemPartitio } } + #[cfg(not(llvm_enzyme))] + let autodiff_mono_items: Vec<_> = vec![]; + #[cfg(llvm_enzyme)] let mut autodiff_mono_items: Vec<_> = vec![]; let mono_items: DefIdSet = items .iter() .filter_map(|mono_item| match *mono_item { MonoItem::Fn(ref instance) => { + #[cfg(llvm_enzyme)] autodiff_mono_items.push((mono_item, instance)); Some(instance.def_id()) }