-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Invalid conversion between floating-point tuples #45485
Labels
compiler:codegen
Generation of LLVM IR and native code
regression
Regression in behavior compared to a previous version
Comments
Confirmed on test codeVERSION
struct MaybeTuple
val::Union{Nothing, Tuple{Float32}}
end
MaybeTuple((0,)) test resultLooks like a regression. 1.7.3 julia> VERSION
v"1.7.3"
julia> struct MaybeTuple
val::Union{Nothing, Tuple{Float32}}
end
julia> MaybeTuple((0,))
MaybeTuple((0.0f0,)) 1.8.0-rc1 julia> VERSION
v"1.8.0-rc1"
julia> struct MaybeTuple
val::Union{Nothing, Tuple{Float32}}
end
julia> MaybeTuple((0,))
MaybeTuple((0.0f0,)) https://github.com/JuliaLang/julia/tree/bf2c2e8b211d648d0b477596cab75ba6cb978319 works fine. 1.9.0-DEV.552 julia> VERSION
v"1.9.0-DEV.552"
julia> struct MaybeTuple
val::Union{Nothing, Tuple{Float32}}
end
julia> MaybeTuple((0,))
MaybeTuple((0.0f0,)) Maybe related to: #45153 By using CI build (debug version), I got an "Assertion failed". 1.9.0-DEV.856 package_win64 julia> versioninfo()
Julia Version 1.9.0-DEV.856
Commit a8d1d366f6 (2022-06-28 14:36 UTC)
Platform Info:
OS: Windows (x86_64-w64-mingw32)
CPU: 6 × Intel(R) Core(TM) i5-9400F CPU @ 2.90GHz
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-14.0.5 (ORCJIT, skylake)
Threads: 1 on 6 virtual cores
julia> VERSION
v"1.9.0-DEV.856"
julia> struct MaybeTuple
val::Union{Nothing, Tuple{Float32}}
end
julia> MaybeTuple((0,))
Assertion failed: !field_promotable, file /cygdrive/c/buildbot/worker/package_win64/build/src/cgutils.cpp, line 3697
signal (22): SIGABRT
in expression starting at REPL[3]:1
crt_sig_handler at /cygdrive/c/buildbot/worker/package_win64/build/src\signals-win.c:93
raise at C:\WINDOWS\System32\msvcrt.dll (unknown line)
abort at C:\WINDOWS\System32\msvcrt.dll (unknown line)
assert at C:\WINDOWS\System32\msvcrt.dll (unknown line)
emit_new_struct at /cygdrive/c/buildbot/worker/package_win64/build/src\cgutils.cpp:3697
emit_expr at /cygdrive/c/buildbot/worker/package_win64/build/src\codegen.cpp:5134
emit_ssaval_assign at /cygdrive/c/buildbot/worker/package_win64/build/src\codegen.cpp:4585
emit_stmtpos at /cygdrive/c/buildbot/worker/package_win64/build/src\codegen.cpp:4795
emit_function at /cygdrive/c/buildbot/worker/package_win64/build/src\codegen.cpp:7825
jl_emit_code at /cygdrive/c/buildbot/worker/package_win64/build/src\codegen.cpp:8186
jl_emit_codeinst at /cygdrive/c/buildbot/worker/package_win64/build/src\codegen.cpp:8234
_jl_compile_codeinst at /cygdrive/c/buildbot/worker/package_win64/build/src\jitlayers.cpp:128
jl_generate_fptr_impl at /cygdrive/c/buildbot/worker/package_win64/build/src\jitlayers.cpp:358
jl_compile_method_internal at /cygdrive/c/buildbot/worker/package_win64/build/src\gf.c:2107
jl_compile_method_internal at /cygdrive/c/buildbot/worker/package_win64/build/src\gf.c:2051 [inlined]
_jl_invoke at /cygdrive/c/buildbot/worker/package_win64/build/src\gf.c:2385 [inlined]
ijl_apply_generic at /cygdrive/c/buildbot/worker/package_win64/build/src\gf.c:2575
jl_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\julia.h:1845 [inlined]
do_call at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:126
eval_value at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:215
eval_stmt_value at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:166 [inlined]
eval_body at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:612
jl_interpret_toplevel_thunk at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:750
jl_toplevel_eval_flex at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:912
jl_toplevel_eval_flex at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:856
ijl_toplevel_eval at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:921 [inlined]
ijl_toplevel_eval_in at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:971
eval at .\boot.jl:370 [inlined]
eval_user_input at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.9\REPL\src\REPL.jl:152
repl_backend_loop at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.9\REPL\src\REPL.jl:248
#start_repl_backend#46 at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.9\REPL\src\REPL.jl:233
start_repl_backend##kw at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.9\REPL\src\REPL.jl:230 [inlined]
#run_repl#59 at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.9\REPL\src\REPL.jl:372
run_repl at C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.9\REPL\src\REPL.jl:357
jfptr_run_repl_53404.clone_1 at C:\Users\woclass\Downloads\julia-a8d1d366f6-win64\julia-a8d1d366f6\lib\julia\sys.dll (unknown line)
_jl_invoke at /cygdrive/c/buildbot/worker/package_win64/build/src\gf.c:2393 [inlined]
ijl_apply_generic at /cygdrive/c/buildbot/worker/package_win64/build/src\gf.c:2575
#988 at .\client.jl:415
jfptr_YY.988_32487.clone_1 at C:\Users\woclass\Downloads\julia-a8d1d366f6-win64\julia-a8d1d366f6\lib\julia\sys.dll (unknown line)
_jl_invoke at /cygdrive/c/buildbot/worker/package_win64/build/src\gf.c:2393 [inlined]
ijl_apply_generic at /cygdrive/c/buildbot/worker/package_win64/build/src\gf.c:2575
jl_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\julia.h:1845 [inlined]
jl_f__call_latest at /cygdrive/c/buildbot/worker/package_win64/build/src\builtins.c:774
run_main_repl at .\client.jl:400
exec_options at .\client.jl:314
_start at .\client.jl:516
jfptr__start_27830.clone_1 at C:\Users\woclass\Downloads\julia-a8d1d366f6-win64\julia-a8d1d366f6\lib\julia\sys.dll (unknown line)
_jl_invoke at /cygdrive/c/buildbot/worker/package_win64/build/src\gf.c:2393 [inlined]
ijl_apply_generic at /cygdrive/c/buildbot/worker/package_win64/build/src\gf.c:2575
jl_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\julia.h:1845 [inlined]
true_main at /cygdrive/c/buildbot/worker/package_win64/build/src\jlapi.c:567
jl_repl_entrypoint at /cygdrive/c/buildbot/worker/package_win64/build/src\jlapi.c:711
mainCRTStartup at /cygdrive/c/buildbot/worker/package_win64/build/cli\loader_exe.c:59
BaseThreadInitThunk at C:\WINDOWS\System32\KERNEL32.DLL (unknown line)
RtlUserThreadStart at C:\WINDOWS\SYSTEM32\ntdll.dll (unknown line)
Allocations: 2870 (Pool: 2859; Big: 11); GC: 0 1.9.0-DEV.875 julia> VERSION
v"1.9.0-DEV.875"
julia> struct MaybeTuple
val::Union{Nothing, Tuple{Float32}}
end
julia> MaybeTuple((0,))
MaybeTuple((-5.8949936f-16,)) Other testtest codeVERSION
struct MaybeTuple64
val::Union{Nothing, Tuple{Float64}}
end
MaybeTuple64((0,))
MaybeTuple64((0f0,))
MaybeTuple64((Float16(0),))
struct MaybeTuple32
val::Union{Nothing, Tuple{Float32}}
end
MaybeTuple32((0,))
MaybeTuple32((0f0,))
MaybeTuple32((Float16(0),))
struct MaybeTuple16
val::Union{Nothing, Tuple{Float16}}
end
MaybeTuple16((0,))
MaybeTuple16((0f0,))
MaybeTuple16((Float16(0),)) julia> VERSION
v"1.9.0-DEV.875"
julia> struct MaybeTuple64
val::Union{Nothing, Tuple{Float64}}
end
julia> MaybeTuple64((0,))
MaybeTuple64((1.5132e-319,))
julia> MaybeTuple64((0f0,))
MaybeTuple64((1.5132e-319,))
julia> MaybeTuple64((Float16(0),))
MaybeTuple64((1.5132e-319,))
julia> struct MaybeTuple32
val::Union{Nothing, Tuple{Float32}}
end
julia> MaybeTuple32((0,))
MaybeTuple32((-4.0105147f30,))
julia> MaybeTuple32((0f0,))
MaybeTuple32((0.0f0,))
julia> MaybeTuple32((Float16(0),))
MaybeTuple32((-4.011182f30,))
julia> struct MaybeTuple16
val::Union{Nothing, Tuple{Float16}}
end
julia> MaybeTuple16((0,))
MaybeTuple16((Float16(-5.72e-5),))
julia> MaybeTuple16((0f0,))
MaybeTuple16((Float16(-0.0002594),))
julia> MaybeTuple16((Float16(0),))
MaybeTuple16((Float16(0.0),)) |
inkydragon
added
regression
Regression in behavior compared to a previous version
compiler:codegen
Generation of LLVM IR and native code
labels
Jul 3, 2022
Closed by #45476, Commit 6009ae9 julia> versioninfo()
Julia Version 1.9.0-DEV.1027
Commit 6009ae9ca2 (2022-07-21 23:21 UTC)
Platform Info:
OS: Windows (x86_64-w64-mingw32)
CPU: 12 × Intel(R) Core(TM) i7-10710U CPU @ 1.10GHz
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-14.0.5 (ORCJIT, skylake)
Threads: 1 on 12 virtual cores
julia>
julia> VERSION
v"1.9.0-DEV.1027"
julia> struct MaybeTuple
val::Union{Nothing, Tuple{Float32}}
end
julia> MaybeTuple((0,))
MaybeTuple((0.0f0,))
julia> struct ReproStruct
val::Union{Nothing, NTuple{4,Float32}}
end
julia> ReproStruct((0.0, 0.0, 0.0, 0.1))
ReproStruct((0.0f0, 0.0f0, 0.0f0, 0.1f0)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
compiler:codegen
Generation of LLVM IR and native code
regression
Regression in behavior compared to a previous version
I stumbled upon a pretty surprising behavior on nightly:
while removing the
Nothing
in the field type results in the correct behavior:Whether I
@show
internal variables inBase.convert
seems to have an impact on the result, I believe the root issue might be about some data not being preserved (in absence of side-effects like printing).Note that
convert(Union{Nothing, NTuple{4, Float32}}, (0.0, 0.0, 0.0, 1.0))
seems to work fine as well.The text was updated successfully, but these errors were encountered: