@@ -522,31 +522,33 @@ fn thin_lto(
522522 }
523523}
524524
525- fn enable_autodiff_settings ( ad : & [ config:: AutoDiff ] ) {
525+ fn enable_autodiff_settings ( cgcx : & CodegenContext < LlvmCodegenBackend > , ad : & [ config:: AutoDiff ] ) {
526+ use rustc_codegen_ssa:: back:: write:: EnzymeWrapper ;
527+ let enzyme = rustc_codegen_ssa:: back:: write:: EnzymeWrapper :: current ( cgcx) ;
526528 for val in ad {
527529 // We intentionally don't use a wildcard, to not forget handling anything new.
528530 match val {
529531 config:: AutoDiff :: PrintPerf => {
530- llvm :: set_print_perf ( true ) ;
532+ enzyme . lock ( ) . unwrap ( ) . set_print_perf ( true ) ;
531533 }
532534 config:: AutoDiff :: PrintAA => {
533- llvm :: set_print_activity ( true ) ;
535+ enzyme . lock ( ) . unwrap ( ) . set_print_activity ( true ) ;
534536 }
535537 config:: AutoDiff :: PrintTA => {
536- llvm :: set_print_type ( true ) ;
538+ enzyme . lock ( ) . unwrap ( ) . set_print_type ( true ) ;
537539 }
538540 config:: AutoDiff :: PrintTAFn ( fun) => {
539- llvm :: set_print_type ( true ) ; // Enable general type printing
540- llvm :: set_print_type_fun ( & fun) ; // Set specific function to analyze
541+ enzyme . lock ( ) . unwrap ( ) . set_print_type ( true ) ; // Enable general type printing
542+ enzyme . lock ( ) . unwrap ( ) . set_print_type_fun ( & fun) ; // Set specific function to analyze
541543 }
542544 config:: AutoDiff :: Inline => {
543- llvm :: set_inline ( true ) ;
545+ enzyme . lock ( ) . unwrap ( ) . set_inline ( true ) ;
544546 }
545547 config:: AutoDiff :: LooseTypes => {
546- llvm :: set_loose_types ( true ) ;
548+ enzyme . lock ( ) . unwrap ( ) . set_loose_types ( true ) ;
547549 }
548550 config:: AutoDiff :: PrintSteps => {
549- llvm :: set_print ( true ) ;
551+ enzyme . lock ( ) . unwrap ( ) . set_print ( true ) ;
550552 }
551553 // We handle this in the PassWrapper.cpp
552554 config:: AutoDiff :: PrintPasses => { }
@@ -563,9 +565,9 @@ fn enable_autodiff_settings(ad: &[config::AutoDiff]) {
563565 }
564566 }
565567 // This helps with handling enums for now.
566- llvm :: set_strict_aliasing ( false ) ;
568+ enzyme . lock ( ) . unwrap ( ) . set_strict_aliasing ( false ) ;
567569 // FIXME(ZuseZ4): Test this, since it was added a long time ago.
568- llvm :: set_rust_rules ( true ) ;
570+ enzyme . lock ( ) . unwrap ( ) . set_rust_rules ( true ) ;
569571}
570572
571573pub ( crate ) fn run_pass_manager (
@@ -601,7 +603,7 @@ pub(crate) fn run_pass_manager(
601603 } ;
602604
603605 if enable_ad {
604- enable_autodiff_settings ( & config. autodiff ) ;
606+ enable_autodiff_settings ( & cgcx , & config. autodiff ) ;
605607 }
606608
607609 unsafe {
0 commit comments