@@ -460,12 +460,27 @@ function CC.concrete_eval_eligible(interp::GPUInterpreter,
460
460
end
461
461
end
462
462
463
+ struct DeferredCallInfo <: CC.CallInfo
464
+ rt:: DataType
465
+ info:: CC.CallInfo
466
+ end
467
+
463
468
function CC. abstract_call_known (interp:: GPUInterpreter , @nospecialize (f),
464
469
arginfo:: CC.ArgInfo , si:: CC.StmtInfo , sv:: CC.AbsIntState ,
465
470
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" )
469
484
end
470
485
return @invoke CC. abstract_call_known (interp:: CC.AbstractInterpreter , f,
471
486
arginfo:: CC.ArgInfo , si:: CC.StmtInfo , sv:: CC.AbsIntState ,
0 commit comments