@@ -54,10 +54,8 @@ function Compiler.transform_result_for_cache(interp::SplitCacheInterp, result::C
54
54
isexpr (stmt, :call ) || continue
55
55
f = stmt. args[1 ]
56
56
f === override && continue
57
- if isa (f, GlobalRef)
58
- T = widenconst (argextype (f, ir))
59
- T <: Core.Builtin && continue
60
- end
57
+ T = widenconst (argextype (f, ir))
58
+ T <: Core.Builtin && continue
61
59
insert! (stmt. args, 1 , override)
62
60
insert! (stmt. args, 3 , interp. owner)
63
61
end
67
65
with_new_compiler (f, args... ; owner:: SplitCacheOwner = SplitCacheOwner ()) = with_new_compiler (f, owner, args... )
68
66
69
67
function with_new_compiler (f, owner:: SplitCacheOwner , args... )
68
+ # We try to avoid introducing `with_new_compiler` in the first place,
69
+ # but if we can't see the type, it's still possible to end up with a
70
+ # builtin here - simply forward to the ordinary builtin call.
71
+ isa (f, Core. Builtin) && return f (args... )
70
72
mi = lookup_method_instance (f, args... )
71
73
new_compiler_ci = Core. OptimizedGenerics. CompilerPlugins. typeinf (
72
74
owner, mi, Compiler. SOURCE_MODE_ABI
0 commit comments