You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This penalizes a lot of Cassette-based code, where splatting is used heavily for every function call (overdub(ctx, args...)) and we get plenty calls to jl_f_tuple and jl_f_getfield as soon as passing a non-concrete argument (as observed in JuliaGPU/CUDAnative.jl#334 where these calls break compilation).
The text was updated successfully, but these errors were encountered:
The following example generates bad code on recent Julia releases (including master):
Not passing a
Type{Int}
(or any other non-concrete argument), or getting rid of the varargs, results in the expected clean code.This doesn't look like an inference/specialization problem to me (i.e. not #34365):
Instead, we get the tuple from the specsig but non-concrete varargs code path here:
julia/src/codegen.cpp
Lines 6177 to 6202 in 0549bf1
This penalizes a lot of Cassette-based code, where splatting is used heavily for every function call (
overdub(ctx, args...)
) and we get plenty calls tojl_f_tuple
andjl_f_getfield
as soon as passing a non-concrete argument (as observed in JuliaGPU/CUDAnative.jl#334 where these calls break compilation).The text was updated successfully, but these errors were encountered: