@@ -31,6 +31,9 @@ function jlcall_fwd(B, orig, gutils, normalR, shadowR)
3131 if in (name, (" ijl_f__svec_ref" , " jl_f__svec_ref" ))
3232 return common_f_svec_ref_fwd (2 , B, orig, gutils, normalR, shadowR)
3333 end
34+ if in (name, (" ijl_f_finalizer" , " jl_f_finalizer" ))
35+ return common_finalizer_fwd (2 , B, orig, gutils, normalR, shadowR)
36+ end
3437 if any (map (k-> kind (k)== kind (StringAttribute (" enzyme_inactive" )), collect (function_attributes (F))))
3538 return true
3639 end
@@ -69,6 +72,9 @@ function jlcall_augfwd(B, orig, gutils, normalR, shadowR, tapeR)
6972 if in (name, (" ijl_f__svec_rev" , " jl_f__svec_ref" ))
7073 return common_f_svec_ref_augfwd (2 , B, orig, gutils, normalR, shadowR, tapeR)
7174 end
75+ if in (name, (" ijl_f_finalizer" , " jl_f_finalizer" ))
76+ return common_finalizer_augfwd (2 , B, orig, gutils, normalR, shadowR, tapeR)
77+ end
7278 if any (map (k-> kind (k)== kind (StringAttribute (" enzyme_inactive" )), collect (function_attributes (F))))
7379 return true
7480 end
@@ -115,6 +121,10 @@ function jlcall_rev(B, orig, gutils, tape)
115121 common_f_svec_ref_rev (2 , B, orig, gutils, tape)
116122 return nothing
117123 end
124+ if in (name, (" ijl_f_finalizer" , " jl_f_finalizer" ))
125+ common_finalizer_rev (2 , B, orig, gutils, tape)
126+ return nothing
127+ end
118128 if any (map (k-> kind (k)== kind (StringAttribute (" enzyme_inactive" )), collect (function_attributes (F))))
119129 return nothing
120130 end
@@ -1103,7 +1113,7 @@ function finalizer_fwd(B, orig, gutils, normalR, shadowR)
11031113 if is_constant_value (gutils, orig) && is_constant_inst (gutils, orig)
11041114 return true
11051115 end
1106- err = emit_error (B, orig, " Enzyme: unhandled augmented forward for jl_gc_add_finalizer_th or jl_gc_add_ptr_finalizer" )
1116+ err = emit_error (B, orig, " Enzyme: unhandled forward for jl_gc_add_finalizer_th or jl_gc_add_ptr_finalizer" )
11071117 newo = new_from_original (gutils, orig)
11081118 API. moveBefore (newo, err, B)
11091119 normal = (unsafe_load (normalR) != C_NULL ) ? LLVM. Instruction (unsafe_load (normalR)) : nothing
@@ -1117,9 +1127,9 @@ function finalizer_augfwd(B, orig, gutils, normalR, shadowR, tapeR)
11171127 if is_constant_value (gutils, orig) && is_constant_inst (gutils, orig)
11181128 return true
11191129 end
1120- # err = emit_error(B, orig, "Enzyme: unhandled augmented forward for jl_gc_add_finalizer_th")
1121- # newo = new_from_original(gutils, orig)
1122- # API.moveBefore(newo, err, B)
1130+ err = emit_error (B, orig, " Enzyme: unhandled augmented forward for jl_gc_add_finalizer_th" )
1131+ newo = new_from_original (gutils, orig)
1132+ API. moveBefore (newo, err, B)
11231133 normal = (unsafe_load (normalR) != C_NULL ) ? LLVM. Instruction (unsafe_load (normalR)) : nothing
11241134 if shadowR != C_NULL && normal != = nothing
11251135 unsafe_store! (shadowR, normal. ref)
0 commit comments