From 887ff5a0ddc700f719ccc1c0687782b4863f8c3b Mon Sep 17 00:00:00 2001 From: "Zachary P. Christensen" Date: Wed, 29 Mar 2023 00:52:08 -0400 Subject: [PATCH] Fix LLVMPtr subtyping --- src/jltypes.c | 5 +++-- test/llvmcall.jl | 2 ++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/jltypes.c b/src/jltypes.c index 0439c8d034e6b..fd2f1eb17f8f9 100644 --- a/src/jltypes.c +++ b/src/jltypes.c @@ -2739,8 +2739,9 @@ void jl_init_types(void) JL_GC_DISABLED jl_pointer_typename = ((jl_datatype_t*)jl_unwrap_unionall((jl_value_t*)jl_pointer_type))->name; // LLVMPtr{T, AS} where {T, AS} - tv = jl_svec2(tvar("T"), tvar("AS")); - jl_svec_t *tv_base = jl_svec1(tvar("T")); + jl_tvar_t *elvar = tvar("T"); + tv = jl_svec2(elvar, tvar("AS")); + jl_svec_t *tv_base = jl_svec1(elvar); jl_llvmpointer_type = (jl_unionall_t*) jl_new_primitivetype((jl_value_t*)jl_symbol("LLVMPtr"), core, (jl_datatype_t*)jl_apply_type((jl_value_t*)jl_ref_type, jl_svec_data(tv_base), 1), tv, diff --git a/test/llvmcall.jl b/test/llvmcall.jl index a89696ed9c6c2..f7f6b44b29e62 100644 --- a/test/llvmcall.jl +++ b/test/llvmcall.jl @@ -264,5 +264,7 @@ MyStruct(kern) = MyStruct(kern, reinterpret(Core.LLVMPtr{UInt8,1}, 0)) MyStruct() = MyStruct(0) s = MyStruct() +# ensure LLVMPtr properly subtypes +@test eltype(supertype(Core.LLVMPtr{UInt8,1})) <: UInt8 @test s.kern == 0 @test reinterpret(Int, s.ptr) == 0