@@ -522,31 +522,33 @@ fn thin_lto(
522
522
}
523
523
}
524
524
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) ;
526
528
for val in ad {
527
529
// We intentionally don't use a wildcard, to not forget handling anything new.
528
530
match val {
529
531
config:: AutoDiff :: PrintPerf => {
530
- llvm :: set_print_perf ( true ) ;
532
+ enzyme . lock ( ) . unwrap ( ) . set_print_perf ( true ) ;
531
533
}
532
534
config:: AutoDiff :: PrintAA => {
533
- llvm :: set_print_activity ( true ) ;
535
+ enzyme . lock ( ) . unwrap ( ) . set_print_activity ( true ) ;
534
536
}
535
537
config:: AutoDiff :: PrintTA => {
536
- llvm :: set_print_type ( true ) ;
538
+ enzyme . lock ( ) . unwrap ( ) . set_print_type ( true ) ;
537
539
}
538
540
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
541
543
}
542
544
config:: AutoDiff :: Inline => {
543
- llvm :: set_inline ( true ) ;
545
+ enzyme . lock ( ) . unwrap ( ) . set_inline ( true ) ;
544
546
}
545
547
config:: AutoDiff :: LooseTypes => {
546
- llvm :: set_loose_types ( true ) ;
548
+ enzyme . lock ( ) . unwrap ( ) . set_loose_types ( true ) ;
547
549
}
548
550
config:: AutoDiff :: PrintSteps => {
549
- llvm :: set_print ( true ) ;
551
+ enzyme . lock ( ) . unwrap ( ) . set_print ( true ) ;
550
552
}
551
553
// We handle this in the PassWrapper.cpp
552
554
config:: AutoDiff :: PrintPasses => { }
@@ -563,9 +565,9 @@ fn enable_autodiff_settings(ad: &[config::AutoDiff]) {
563
565
}
564
566
}
565
567
// This helps with handling enums for now.
566
- llvm :: set_strict_aliasing ( false ) ;
568
+ enzyme . lock ( ) . unwrap ( ) . set_strict_aliasing ( false ) ;
567
569
// 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 ) ;
569
571
}
570
572
571
573
pub ( crate ) fn run_pass_manager (
@@ -601,7 +603,7 @@ pub(crate) fn run_pass_manager(
601
603
} ;
602
604
603
605
if enable_ad {
604
- enable_autodiff_settings ( & config. autodiff ) ;
606
+ enable_autodiff_settings ( & cgcx , & config. autodiff ) ;
605
607
}
606
608
607
609
unsafe {
0 commit comments