@@ -528,31 +528,34 @@ 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 ( ad : & [ config:: AutoDiff ] ) {
533+ let mut enzyme = llvm:: EnzymeWrapper :: get_instance ( ) ;
534+
532535 for val in ad {
533536 // We intentionally don't use a wildcard, to not forget handling anything new.
534537 match val {
535538 config:: AutoDiff :: PrintPerf => {
536- llvm :: set_print_perf ( true ) ;
539+ enzyme . set_print_perf ( true ) ;
537540 }
538541 config:: AutoDiff :: PrintAA => {
539- llvm :: set_print_activity ( true ) ;
542+ enzyme . set_print_activity ( true ) ;
540543 }
541544 config:: AutoDiff :: PrintTA => {
542- llvm :: set_print_type ( true ) ;
545+ enzyme . set_print_type ( true ) ;
543546 }
544547 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
548+ enzyme . set_print_type ( true ) ; // Enable general type printing
549+ enzyme . set_print_type_fun ( & fun) ; // Set specific function to analyze
547550 }
548551 config:: AutoDiff :: Inline => {
549- llvm :: set_inline ( true ) ;
552+ enzyme . set_inline ( true ) ;
550553 }
551554 config:: AutoDiff :: LooseTypes => {
552- llvm :: set_loose_types ( true ) ;
555+ enzyme . set_loose_types ( true ) ;
553556 }
554557 config:: AutoDiff :: PrintSteps => {
555- llvm :: set_print ( true ) ;
558+ enzyme . set_print ( true ) ;
556559 }
557560 // We handle this in the PassWrapper.cpp
558561 config:: AutoDiff :: PrintPasses => { }
@@ -571,9 +574,9 @@ fn enable_autodiff_settings(ad: &[config::AutoDiff]) {
571574 }
572575 }
573576 // This helps with handling enums for now.
574- llvm :: set_strict_aliasing ( false ) ;
577+ enzyme . set_strict_aliasing ( false ) ;
575578 // FIXME(ZuseZ4): Test this, since it was added a long time ago.
576- llvm :: set_rust_rules ( true ) ;
579+ enzyme . set_rust_rules ( true ) ;
577580}
578581
579582pub ( crate ) fn run_pass_manager (
@@ -607,10 +610,6 @@ pub(crate) fn run_pass_manager(
607610 if enable_ad { write:: AutodiffStage :: DuringAD } else { write:: AutodiffStage :: PostAD }
608611 } ;
609612
610- if enable_ad {
611- enable_autodiff_settings ( & config. autodiff ) ;
612- }
613-
614613 unsafe {
615614 write:: llvm_optimize ( cgcx, dcx, module, None , config, opt_level, opt_stage, stage) ;
616615 }
0 commit comments