@@ -460,12 +460,27 @@ function CC.concrete_eval_eligible(interp::GPUInterpreter,
460460end
461461end
462462
463+ struct DeferredCallInfo <: CC.CallInfo
464+ rt:: DataType
465+ info:: CC.CallInfo
466+ end
467+
463468function CC. abstract_call_known (interp:: GPUInterpreter , @nospecialize (f),
464469 arginfo:: CC.ArgInfo , si:: CC.StmtInfo , sv:: CC.AbsIntState ,
465470 max_methods:: Int = CC. get_max_methods (interp, f, sv))
466- if f === var"gpuc.deferred" ||
467- f === var"gpuc.lookup"
468- return CC. CallMeta (Ptr{Cvoid}, Union{}, CC. Effects (), CC. NoCallInfo ())
471+ (; fargs, argtypes) = arginfo
472+ if f === var"gpuc.deferred"
473+ argvec = argtypes[2 : end ]
474+ call = CC. abstract_call (interp, CC. ArgInfo (nothing , argvec), si, sv, max_methods)
475+ callinfo = DeferredCallInfo (call. rt, call. info)
476+ @static if VERSION < v " 1.11.0-"
477+ return CC. CallMeta (Ptr{Cvoid}, CC. Effects (), callinfo)
478+ else
479+ return CC. CallMeta (Ptr{Cvoid}, Union{}, CC. Effects (), callinfo)
480+ end
481+ end
482+ if f === var"gpuc.lookup"
483+ error (" Unimplemented" )
469484 end
470485 return @invoke CC. abstract_call_known (interp:: CC.AbstractInterpreter , f,
471486 arginfo:: CC.ArgInfo , si:: CC.StmtInfo , sv:: CC.AbsIntState ,
0 commit comments