@@ -43,7 +43,6 @@ struct ADInterpreter <: AbstractInterpreter
43
43
# Modes settings
44
44
forward:: Bool
45
45
backward:: Bool
46
- reinference:: Bool
47
46
48
47
# This cache is stratified by AD nesting level. Depending on the
49
48
# nesting level of the derivative, The AD primitives may behave
@@ -64,7 +63,6 @@ struct ADInterpreter <: AbstractInterpreter
64
63
return new (
65
64
#= forward::Bool=# false ,
66
65
#= backward::Bool=# true ,
67
- #= reinference::Bool=# false ,
68
66
#= opt::OffsetVector{OptCache}=# OffsetVector ([OptCache (), OptCache ()], 0 : 1 ),
69
67
#= unopt::Union{OffsetVector{UnoptCache},Nothing}=# OffsetVector ([UnoptCache (), UnoptCache ()], 0 : 1 ),
70
68
#= transformed::OffsetVector{OptCache}=# OffsetVector ([OptCache (), OptCache ()], 0 : 1 ),
@@ -75,14 +73,13 @@ struct ADInterpreter <: AbstractInterpreter
75
73
function ADInterpreter (interp:: ADInterpreter = _ADInterpreter ();
76
74
forward:: Bool = interp. forward,
77
75
backward:: Bool = interp. backward,
78
- reinference:: Bool = interp. reinference,
79
76
opt:: OffsetVector{OptCache} = interp. opt,
80
77
unopt:: Union{OffsetVector{UnoptCache},Nothing} = interp. unopt,
81
78
transformed:: OffsetVector{OptCache} = interp. transformed,
82
79
native_interpreter:: NativeInterpreter = interp. native_interpreter,
83
80
current_level:: Int = interp. current_level,
84
81
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)
86
83
end
87
84
end
88
85
@@ -91,8 +88,6 @@ raise_level(interp::ADInterpreter) = change_level(interp, interp.current_level +
91
88
lower_level (interp:: ADInterpreter ) = change_level (interp, interp. current_level - 1 )
92
89
93
90
disable_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 )
96
91
97
92
function Cthulhu. get_optimized_codeinst (interp:: ADInterpreter , curs:: ADCursor )
98
93
@show curs
@@ -340,25 +335,12 @@ function CC.inlining_policy(interp::ADInterpreter,
340
335
nothing , info:: CC.CallInfo , stmt_flag:: UInt8 , mi:: MethodInstance , argtypes:: Vector{Any} )
341
336
end
342
337
343
- function dummy () end
344
- const dummym = first (methods (dummy))
345
-
346
338
function CC. abstract_call_gf_by_type (interp:: ADInterpreter , @nospecialize (f),
347
339
arginfo:: ArgInfo , si:: StmtInfo , @nospecialize (atype),
348
340
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 )
362
344
end
363
345
364
346
#=
0 commit comments