@@ -43,7 +43,6 @@ struct ADInterpreter <: AbstractInterpreter
4343 # Modes settings
4444 forward:: Bool
4545 backward:: Bool
46- reinference:: Bool
4746
4847 # This cache is stratified by AD nesting level. Depending on the
4948 # nesting level of the derivative, The AD primitives may behave
@@ -64,7 +63,6 @@ struct ADInterpreter <: AbstractInterpreter
6463 return new (
6564 #= forward::Bool=# false ,
6665 #= backward::Bool=# true ,
67- #= reinference::Bool=# false ,
6866 #= opt::OffsetVector{OptCache}=# OffsetVector ([OptCache (), OptCache ()], 0 : 1 ),
6967 #= unopt::Union{OffsetVector{UnoptCache},Nothing}=# OffsetVector ([UnoptCache (), UnoptCache ()], 0 : 1 ),
7068 #= transformed::OffsetVector{OptCache}=# OffsetVector ([OptCache (), OptCache ()], 0 : 1 ),
@@ -75,14 +73,13 @@ struct ADInterpreter <: AbstractInterpreter
7573 function ADInterpreter (interp:: ADInterpreter = _ADInterpreter ();
7674 forward:: Bool = interp. forward,
7775 backward:: Bool = interp. backward,
78- reinference:: Bool = interp. reinference,
7976 opt:: OffsetVector{OptCache} = interp. opt,
8077 unopt:: Union{OffsetVector{UnoptCache},Nothing} = interp. unopt,
8178 transformed:: OffsetVector{OptCache} = interp. transformed,
8279 native_interpreter:: NativeInterpreter = interp. native_interpreter,
8380 current_level:: Int = interp. current_level,
8481 remarks:: OffsetVector{RemarksCache} = interp. remarks)
85- return new (forward, backward, reinference, opt, unopt, transformed, native_interpreter, current_level, remarks)
82+ return new (forward, backward, opt, unopt, transformed, native_interpreter, current_level, remarks)
8683 end
8784end
8885
@@ -91,8 +88,6 @@ raise_level(interp::ADInterpreter) = change_level(interp, interp.current_level +
9188lower_level (interp:: ADInterpreter ) = change_level (interp, interp. current_level - 1 )
9289
9390disable_forward (interp:: ADInterpreter ) = ADInterpreter (interp; forward= false )
94- disable_reinference (interp:: ADInterpreter ) = ADInterpreter (interp; reinference= false )
95- enable_reinference (interp:: ADInterpreter ) = ADInterpreter (interp; reinference= true )
9691
9792function Cthulhu. get_optimized_codeinst (interp:: ADInterpreter , curs:: ADCursor )
9893 @show curs
@@ -340,25 +335,12 @@ function CC.inlining_policy(interp::ADInterpreter,
340335 nothing , info:: CC.CallInfo , stmt_flag:: UInt8 , mi:: MethodInstance , argtypes:: Vector{Any} )
341336end
342337
343- function dummy () end
344- const dummym = first (methods (dummy))
345-
346338function CC. abstract_call_gf_by_type (interp:: ADInterpreter , @nospecialize (f),
347339 arginfo:: ArgInfo , si:: StmtInfo , @nospecialize (atype),
348340 sv:: IRInterpretationState , max_methods:: Int )
349-
350- if interp. reinference
351- # Create a dummy inference state to serve as the root
352- # TODO : This is terrible - how can we refactor this to do better?
353- mi = CC. specialize_method (dummym, Tuple{typeof (dummy)}, Core. svec ())
354- result = InferenceResult (mi)
355- interp′ = disable_forward (disable_reinference (interp))
356- sv′ = InferenceState (result, :no , interp′)
357- r = abstract_call_gf_by_type (interp′, f, arginfo, si, atype, sv′, - 1 )
358- return r
359- end
360-
361- return CallMeta (Any, Effects (), CC. NoCallInfo ())
341+ return @invoke CC. abstract_call_gf_by_type (interp:: AbstractInterpreter , f:: Any ,
342+ arginfo:: ArgInfo , si:: StmtInfo , atype:: Any ,
343+ sv:: CC.AbsIntState , max_methods:: Int )
362344end
363345
364346#=
0 commit comments