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
staticdata: Set min validation world to require world (JuliaLang#57381)
When we have implicit binding edges from literal GlobalRefs, these edges
imply a implicit minimum world age of jl_require_age (which is what all
bindings loaded from pkgimages get their definition age set to). In
JuliaLang#57318, the `cpuid_llvm` minimum world age got set to `1` rather than
`jl_require_world`, so codegen would refuse to perform the llvmcall
special codegen, since it couldn't guarantee that the binding would
actually resolve to `llvmcall` in all worlds. Fix that by adjusting
staticdata.jl to set the appropriate minworld.
That said, there are a few complicating factors here:
1. In general, most of our code doesn't handle world ranges with more
than one partition. But for example, codegen could have checked the
current world age and implicitly partitioned the binding at codegen time
(in practice just adding an appropraite error check).
2. The included test case uses a cached inference. However, in the
original issue it appeared that inlining was also creating new
references to this replaced binding, which should not have been
permitted. I have not fully investigated this behavior yet and this
might be another bug.
3. In the original issue, the specialization had its max_world
terminated a few ages past jl_require_world. I do not understand this
behavior yet.
Still, fixesJuliaLang#57318.
0 commit comments