Open nsajko opened 1 week ago
Bisecting. It seems there are two different events of interest here:
Base.infer_effects
call, as shown above.Bisected the first event to 631b5c39b72d91bec33262e14ce96f74de9aa7b6 #51092. cc @vtjnash
Bisected the second event to 65aeaf6c6528e8e309b16340958784d53e28ccc3 #54323. cc @aviatesk
Before:
julia> include("/tmp/reproducer.jl")
Main.Utils
julia> Base.infer_effects(Utils.half_floor)
(!c,!e,!n,!t,!s,!m,!u)′
julia> Base.infer_effects(Utils.half_floor)
(!c,!e,!n,!t,!s,!m,!u)′
julia> versioninfo()
Julia Version 1.12.0-DEV.654
Commit 583981fb43c (2024-06-05 00:17 UTC)
Build Info:
Official https://julialang.org/ release
Platform Info:
OS: Linux (x86_64-linux-gnu)
CPU: 8 × AMD Ryzen 3 5300U with Radeon Graphics
WORD_SIZE: 64
LLVM: libLLVM-17.0.6 (ORCJIT, znver2)
Threads: 1 default, 0 interactive, 1 GC (on 8 virtual cores)
Environment:
JULIA_NUM_PRECOMPILE_TASKS = 4
JULIA_PKG_PRECOMPILE_AUTO = 0
After:
julia> include("/tmp/reproducer.jl")
Main.Utils
julia> Base.infer_effects(Utils.half_floor)
(+c,+e,!n,!t,+s,?m,+u)
julia> Base.infer_effects(Utils.half_floor)
(!c,!e,!n,!t,!s,!m,!u)′
julia> versioninfo()
Julia Version 1.12.0-DEV.655
Commit 65aeaf6c652 (2024-06-05 01:11 UTC)
Build Info:
Official https://julialang.org/ release
Platform Info:
OS: Linux (x86_64-linux-gnu)
CPU: 8 × AMD Ryzen 3 5300U with Radeon Graphics
WORD_SIZE: 64
LLVM: libLLVM-17.0.6 (ORCJIT, znver2)
Threads: 1 default, 0 interactive, 1 GC (on 8 virtual cores)
Environment:
JULIA_NUM_PRECOMPILE_TASKS = 4
JULIA_PKG_PRECOMPILE_AUTO = 0
I guess it should be possible to somehow preserve the good effect inference result in subsequent effect inference queries, right?
Reproducer:
V1.10 works fine, on v1.11 and v1.12 this happens: