@@ -435,12 +435,27 @@ function CC.concrete_eval_eligible(interp::GPUInterpreter,
435
435
return ret
436
436
end
437
437
438
+ struct DeferredCallInfo <: CC.CallInfo
439
+ rt:: DataType
440
+ info:: CC.CallInfo
441
+ end
442
+
438
443
function CC. abstract_call_known (interp:: GPUInterpreter , @nospecialize (f),
439
444
arginfo:: CC.ArgInfo , si:: CC.StmtInfo , sv:: CC.AbsIntState ,
440
445
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" )
444
459
end
445
460
return @invoke CC. abstract_call_known (interp:: CC.AbstractInterpreter , f,
446
461
arginfo:: CC.ArgInfo , si:: CC.StmtInfo , sv:: CC.AbsIntState ,
0 commit comments