mirror of
https://github.com/rust-lang/rust.git
synced 2025-05-14 02:49:40 +00:00
Auto merge of #136413 - EnzymeAD:fix-autodiff-comptime-regression, r=oli-obk
fix autodiff compile time regression Tries to fix the regression from https://github.com/rust-lang/rust/pull/133429 Tracking: - https://github.com/rust-lang/rust/issues/124509
This commit is contained in:
commit
a5db378dc1
@ -403,7 +403,7 @@ fn generate_lto_work<B: ExtraBackendMethods>(
|
||||
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() };
|
||||
}
|
||||
|
@ -1179,23 +1179,23 @@ 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) => Some(instance.def_id()),
|
||||
MonoItem::Fn(ref instance) => {
|
||||
#[cfg(llvm_enzyme)]
|
||||
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);
|
||||
|
Loading…
Reference in New Issue
Block a user