@@ -528,31 +528,37 @@ fn thin_lto(
528528 }
529529}
530530
531- fn enable_autodiff_settings ( 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+ ) {
536+ let mut enzyme = llvm:: EnzymeWrapper :: get_or_init ( sysroot) ;
537+
532538 for val in ad {
533539 // We intentionally don't use a wildcard, to not forget handling anything new.
534540 match val {
535541 config:: AutoDiff :: PrintPerf => {
536- llvm :: set_print_perf ( true ) ;
542+ enzyme . set_print_perf ( true ) ;
537543 }
538544 config:: AutoDiff :: PrintAA => {
539- llvm :: set_print_activity ( true ) ;
545+ enzyme . set_print_activity ( true ) ;
540546 }
541547 config:: AutoDiff :: PrintTA => {
542- llvm :: set_print_type ( true ) ;
548+ enzyme . set_print_type ( true ) ;
543549 }
544550 config:: AutoDiff :: PrintTAFn ( fun) => {
545- llvm :: set_print_type ( true ) ; // Enable general type printing
546- llvm :: set_print_type_fun ( & fun) ; // Set specific function to analyze
551+ enzyme . set_print_type ( true ) ; // Enable general type printing
552+ enzyme . set_print_type_fun ( & fun) ; // Set specific function to analyze
547553 }
548554 config:: AutoDiff :: Inline => {
549- llvm :: set_inline ( true ) ;
555+ enzyme . set_inline ( true ) ;
550556 }
551557 config:: AutoDiff :: LooseTypes => {
552- llvm :: set_loose_types ( true ) ;
558+ enzyme . set_loose_types ( true ) ;
553559 }
554560 config:: AutoDiff :: PrintSteps => {
555- llvm :: set_print ( true ) ;
561+ enzyme . set_print ( true ) ;
556562 }
557563 // We handle this in the PassWrapper.cpp
558564 config:: AutoDiff :: PrintPasses => { }
@@ -571,9 +577,9 @@ fn enable_autodiff_settings(ad: &[config::AutoDiff]) {
571577 }
572578 }
573579 // This helps with handling enums for now.
574- llvm :: set_strict_aliasing ( false ) ;
580+ enzyme . set_strict_aliasing ( false ) ;
575581 // FIXME(ZuseZ4): Test this, since it was added a long time ago.
576- llvm :: set_rust_rules ( true ) ;
582+ enzyme . set_rust_rules ( true ) ;
577583}
578584
579585pub ( crate ) fn run_pass_manager (
@@ -608,10 +614,6 @@ pub(crate) fn run_pass_manager(
608614 if enable_ad { write:: AutodiffStage :: DuringAD } else { write:: AutodiffStage :: PostAD }
609615 } ;
610616
611- if enable_ad {
612- enable_autodiff_settings ( & config. autodiff ) ;
613- }
614-
615617 unsafe {
616618 write:: llvm_optimize ( cgcx, dcx, module, None , config, opt_level, opt_stage, stage) ;
617619 }
0 commit comments