@@ -876,7 +876,7 @@ function typeinf_edge(interp::AbstractInterpreter, method::Method, @nospecialize
876876 end
877877 end
878878 end
879- if ccall (:jl_get_module_infer , Cint, (Any,), method. module) == 0
879+ if ! InferenceParams (interp) . force_enable_inference && ccall (:jl_get_module_infer , Cint, (Any,), method. module) == 0
880880 add_remark! (interp, caller, " [typeinf_edge] Inference is disabled for the target module" )
881881 return Future (MethodCallResult (interp, caller, method, Any, Any, Effects (), nothing , edgecycle, edgelimited))
882882 end
@@ -1160,15 +1160,17 @@ function typeinf_ext(interp::AbstractInterpreter, mi::MethodInstance, source_mod
11601160 end
11611161 end
11621162 end
1163- if isa (def, Method) && ccall (:jl_get_module_infer , Cint, (Any,), def. module) == 0
1164- src = retrieve_code_info (mi, get_inference_world (interp))
1165- if src isa CodeInfo
1166- finish! (interp, mi, ci, src)
1167- else
1168- engine_reject (interp, ci)
1163+ if ! InferenceParams (interp). force_enable_inference
1164+ if isa (def, Method) && ccall (:jl_get_module_infer , Cint, (Any,), def. module) == 0
1165+ src = retrieve_code_info (mi, get_inference_world (interp))
1166+ if src isa CodeInfo
1167+ finish! (interp, mi, ci, src)
1168+ else
1169+ engine_reject (interp, ci)
1170+ end
1171+ ccall (:jl_typeinf_timing_end , Cvoid, (UInt64,), start_time)
1172+ return ci
11691173 end
1170- ccall (:jl_typeinf_timing_end , Cvoid, (UInt64,), start_time)
1171- return ci
11721174 end
11731175 result = InferenceResult (mi, typeinf_lattice (interp))
11741176 result. ci = ci
@@ -1314,7 +1316,10 @@ function typeinf_ext_toplevel(methods::Vector{Any}, worlds::Vector{UInt}, trim_m
13141316 # first compute the ABIs of everything
13151317 latest = true # whether this_world == world_counter()
13161318 for this_world in reverse (sort! (worlds))
1317- interp = NativeInterpreter (this_world)
1319+ interp = NativeInterpreter (
1320+ this_world;
1321+ inf_params = InferenceParams (; force_enable_inference = trim_mode != TRIM_NO)
1322+ )
13181323 for i = 1 : length (methods)
13191324 # each item in this list is either a MethodInstance indicating something
13201325 # to compile, or an svec(rettype, sig) describing a C-callable alias to create.
@@ -1355,7 +1360,7 @@ function typeinf_ext_toplevel(methods::Vector{Any}, worlds::Vector{UInt}, trim_m
13551360 src = codeinfo_for_const (interp, mi, callee. rettype_const)
13561361 elseif haskey (interp. codegen, callee)
13571362 src = interp. codegen[callee]
1358- elseif isa (def, Method) && ccall (:jl_get_module_infer , Cint, (Any,), def. module) == 0 && trim_mode == TRIM_NO
1363+ elseif isa (def, Method) && ! InferenceParams (interp) . force_enable_inference && ccall (:jl_get_module_infer , Cint, (Any,), def. module) == 0
13591364 src = retrieve_code_info (mi, get_inference_world (interp))
13601365 else
13611366 # TODO : typeinf_code could return something with different edges/ages/owner/abi (needing an update to callee), which we don't handle here
0 commit comments