@@ -435,12 +435,27 @@ function CC.concrete_eval_eligible(interp::GPUInterpreter,
435435 return ret
436436end
437437
438+ struct DeferredCallInfo <: CC.CallInfo
439+ rt:: DataType
440+ info:: CC.CallInfo
441+ end
442+
438443function CC. abstract_call_known (interp:: GPUInterpreter , @nospecialize (f),
439444 arginfo:: CC.ArgInfo , si:: CC.StmtInfo , sv:: CC.AbsIntState ,
440445 max_methods:: Int = CC. get_max_methods (interp, f, sv))
441- if f === var"gpuc.deferred" ||
442- f === var"gpuc.lookup"
443- return CC. CallMeta (Ptr{Cvoid}, Union{}, CC. Effects (), CC. NoCallInfo ())
446+ (; fargs, argtypes) = arginfo
447+ if f === var"gpuc.deferred"
448+ argvec = argtypes[2 : end ]
449+ call = CC. abstract_call (interp, CC. ArgInfo (nothing , argvec), si, sv, max_methods)
450+ callinfo = DeferredCallInfo (call. rt, call. info)
451+ @static if VERSION < v " 1.11.0-"
452+ return CC. CallMeta (Ptr{Cvoid}, CC. Effects (), callinfo)
453+ else
454+ return CC. CallMeta (Ptr{Cvoid}, Union{}, CC. Effects (), callinfo)
455+ end
456+ end
457+ if f === var"gpuc.lookup"
458+ error (" Unimplemented" )
444459 end
445460 return @invoke CC. abstract_call_known (interp:: CC.AbstractInterpreter , f,
446461 arginfo:: CC.ArgInfo , si:: CC.StmtInfo , sv:: CC.AbsIntState ,
0 commit comments