Skip to content

Commit 4e0acc0

Browse files
authored
Preserve integer index type for pointerref/pointerset. (#342)
1 parent d658d41 commit 4e0acc0

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

src/interop/pointer.jl

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,18 @@ export @typed_ccall
66

77
using Core: LLVMPtr
88

9-
@generated function pointerref(ptr::LLVMPtr{T,A}, i::Integer, ::Val{align}) where {T,A,align}
9+
@generated function pointerref(ptr::LLVMPtr{T,A}, i::I, ::Val{align}) where {T,A,I,align}
1010
sizeof(T) == 0 && return T.instance
1111
@dispose ctx=Context() begin
1212
eltyp = convert(LLVMType, T; ctx)
1313

14-
T_int = convert(LLVMType, Int; ctx)
14+
T_idx = convert(LLVMType, I; ctx)
1515
T_ptr = convert(LLVMType, ptr; ctx)
1616

1717
T_typed_ptr = LLVM.PointerType(eltyp, A)
1818

1919
# create a function
20-
param_types = [T_ptr, T_int]
20+
param_types = [T_ptr, T_idx]
2121
llvm_f, _ = create_function(eltyp, param_types)
2222

2323
# generate IR
@@ -39,22 +39,22 @@ using Core: LLVMPtr
3939
ret!(builder, ld)
4040
end
4141

42-
call_function(llvm_f, T, Tuple{LLVMPtr{T,A}, Int}, :ptr, :(Int(i-one(i))))
42+
call_function(llvm_f, T, Tuple{LLVMPtr{T,A}, I}, :ptr, :(i-one(I)))
4343
end
4444
end
4545

46-
@generated function pointerset(ptr::LLVMPtr{T,A}, x::T, i::Integer, ::Val{align}) where {T,A,align}
46+
@generated function pointerset(ptr::LLVMPtr{T,A}, x::T, i::I, ::Val{align}) where {T,A,I,align}
4747
sizeof(T) == 0 && return
4848
@dispose ctx=Context() begin
4949
eltyp = convert(LLVMType, T; ctx)
5050

51-
T_int = convert(LLVMType, Int; ctx)
51+
T_idx = convert(LLVMType, I; ctx)
5252
T_ptr = convert(LLVMType, ptr; ctx)
5353

5454
T_typed_ptr = LLVM.PointerType(eltyp, A)
5555

5656
# create a function
57-
param_types = [T_ptr, eltyp, T_int]
57+
param_types = [T_ptr, eltyp, T_idx]
5858
llvm_f, _ = create_function(LLVM.VoidType(ctx), param_types)
5959

6060
# generate IR
@@ -77,8 +77,8 @@ end
7777
ret!(builder)
7878
end
7979

80-
call_function(llvm_f, Cvoid, Tuple{LLVMPtr{T,A}, T, Int},
81-
:ptr, :(convert(T,x)), :(Int(i-one(i))))
80+
call_function(llvm_f, Cvoid, Tuple{LLVMPtr{T,A}, T, I},
81+
:ptr, :(convert(T,x)), :(i-one(I)))
8282
end
8383
end
8484

0 commit comments

Comments
 (0)