Skip to content
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

Code validation and IR verification improvements #52844

Merged
merged 2 commits into from
Jan 11, 2024
Merged

Code validation and IR verification improvements #52844

merged 2 commits into from
Jan 11, 2024

Conversation

maleadt
Copy link
Member

@maleadt maleadt commented Jan 10, 2024

Fixes this code validation error:

❯ julia -g2

julia> function test(a)
           f = Base.Experimental.@opaque(()->nothing)
           return 0
       end
test (generic function with 1 method)

julia> Base.code_ircode(test, (Any,))
WARNING: Encountered invalid lowered code for method test(Any): Core.Compiler.InvalidCodeError(kind="invalid RHS value", meta=Expr(:new_opaque_closure, SSAValue(1), SSAValue(2), Core.Any, Tuple))

This is already covered by our tests; we just don't happen to run with -g2 to enable validation (which is what #52830 is aiming to change).


Also fixes this IR verification issue:

    julia: /cache/build/builder-amdci4-3/julialang/julia-master/src/task.c:447: ctx_switch: Assertion `ptls->locks.len == 0' failed.
[957] signal 6 (-6): Aborted
in expression starting at /cache/build/tester-amdci4-8/julialang/julia-master/julia-0819ad94c1/share/julia/test/subtype.jl:1100
gsignal at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
abort at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
unknown function (ip: 0x7fd5d2fc240e)
__assert_fail at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
ctx_switch at /cache/build/builder-amdci4-3/julialang/julia-master/src/task.c:447
ijl_switch at /cache/build/builder-amdci4-3/julialang/julia-master/src/task.c:657
try_yieldto at ./task.jl:934
wait at ./task.jl:1008
uv_write at ./stream.jl:1060
...
display at ./multimedia.jl:254
display at ./multimedia.jl:255 [inlined]
display at ./multimedia.jl:340
jfptr_display_53896.1 at /cache/build/tester-amdci4-8/julialang/julia-master/julia-0819ad94c1/lib/julia/sys.so (unknown line)
_jl_invoke at /cache/build/builder-amdci4-3/julialang/julia-master/src/gf.c:2924 [inlined]
ijl_apply_generic at /cache/build/builder-amdci4-3/julialang/julia-master/src/gf.c:3101
jl_apply at /cache/build/builder-amdci4-3/julialang/julia-master/src/julia.h:2152 [inlined]
jl_f__call_latest at /cache/build/builder-amdci4-3/julialang/julia-master/src/builtins.c:875
#invokelatest#3 at ./essentials.jl:955 [inlined]
invokelatest at ./essentials.jl:952 [inlined]
maybe_show_ir at ./compiler/ssair/verify.jl:5 [inlined]
verify_ir at ./compiler/ssair/verify.jl:18

... by using Core.stdout as an unbuffered version of our libuv output streams.

@maleadt maleadt requested a review from Keno January 10, 2024 14:57
@maleadt maleadt changed the title Add Expr(:new_opaque_closure) to the list of valid assignment RHSs Code validation and IR verification improvements Jan 10, 2024
@maleadt maleadt merged commit 73cdfd8 into master Jan 11, 2024
7 of 9 checks passed
@maleadt maleadt deleted the tb/oc_rhs branch January 11, 2024 08:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant