Skip to content

Commit a5db378

Browse files
committed
Auto merge of rust-lang#136413 - EnzymeAD:fix-autodiff-comptime-regression, r=oli-obk
fix autodiff compile time regression Tries to fix the regression from rust-lang#133429 Tracking: - rust-lang#124509
2 parents 7daf4cf + e47caa2 commit a5db378

File tree

2 files changed

+10
-10
lines changed

2 files changed

+10
-10
lines changed

compiler/rustc_codegen_ssa/src/back/write.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,7 @@ fn generate_lto_work<B: ExtraBackendMethods>(
403403
assert!(needs_thin_lto.is_empty());
404404
let mut module =
405405
B::run_fat_lto(cgcx, needs_fat_lto, import_only_modules).unwrap_or_else(|e| e.raise());
406-
if cgcx.lto == Lto::Fat {
406+
if cgcx.lto == Lto::Fat && !autodiff.is_empty() {
407407
let config = cgcx.config(ModuleKind::Regular);
408408
module = unsafe { module.autodiff(cgcx, autodiff, config).unwrap() };
409409
}

compiler/rustc_monomorphize/src/partitioning.rs

+9-9
Original file line numberDiff line numberDiff line change
@@ -1179,23 +1179,23 @@ fn collect_and_partition_mono_items(tcx: TyCtxt<'_>, (): ()) -> MonoItemPartitio
11791179
}
11801180
}
11811181

1182+
#[cfg(not(llvm_enzyme))]
1183+
let autodiff_mono_items: Vec<_> = vec![];
1184+
#[cfg(llvm_enzyme)]
1185+
let mut autodiff_mono_items: Vec<_> = vec![];
11821186
let mono_items: DefIdSet = items
11831187
.iter()
11841188
.filter_map(|mono_item| match *mono_item {
1185-
MonoItem::Fn(ref instance) => Some(instance.def_id()),
1189+
MonoItem::Fn(ref instance) => {
1190+
#[cfg(llvm_enzyme)]
1191+
autodiff_mono_items.push((mono_item, instance));
1192+
Some(instance.def_id())
1193+
}
11861194
MonoItem::Static(def_id) => Some(def_id),
11871195
_ => None,
11881196
})
11891197
.collect();
11901198

1191-
let autodiff_mono_items: Vec<_> = items
1192-
.iter()
1193-
.filter_map(|item| match *item {
1194-
MonoItem::Fn(ref instance) => Some((item, instance)),
1195-
_ => None,
1196-
})
1197-
.collect();
1198-
11991199
let autodiff_items =
12001200
autodiff::find_autodiff_source_functions(tcx, &usage_map, autodiff_mono_items);
12011201
let autodiff_items = tcx.arena.alloc_from_iter(autodiff_items);

0 commit comments

Comments
 (0)