Skip to content

Commit 4b4b909

Browse files
committed
Remove overzealous type conversions.
1 parent ed43adb commit 4b4b909

File tree

11 files changed

+63
-67
lines changed

11 files changed

+63
-67
lines changed

src/core/attributes.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ value(attr::EnumAttribute) = API.LLVMGetEnumAttributeValue(ref(attr))
5353
## string attribute
5454

5555
StringAttribute(kind::String, value::String="", ctx::Context=GlobalContext()) =
56-
StringAttribute(API.LLVMCreateStringAttribute(ref(ctx), kind, Cuint(length(kind)),
57-
value, Cuint(length(value))))
56+
StringAttribute(API.LLVMCreateStringAttribute(ref(ctx), kind, length(kind),
57+
value, length(value)))
5858

5959
function kind(attr::StringAttribute)
6060
len = Ref{Cuint}()

src/core/function.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ personality!(f::Function, persfn::Function) = API.LLVMSetPersonalityFn(ref(f), r
1818
intrinsic_id(f::Function) = API.LLVMGetIntrinsicID(ref(f))
1919

2020
callconv(f::Function) = API.LLVMGetFunctionCallConv(ref(f))
21-
callconv!(f::Function, cc) = API.LLVMSetFunctionCallConv(ref(f), Cuint(cc))
21+
callconv!(f::Function, cc) = API.LLVMSetFunctionCallConv(ref(f), cc)
2222

2323
function gc(f::Function)
2424
ptr = API.LLVMGetGC(ref(f))
@@ -60,7 +60,7 @@ Base.delete!(iter::FunctionAttrSet, attr::EnumAttribute) =
6060

6161
function Base.delete!(iter::FunctionAttrSet, attr::StringAttribute)
6262
k = kind(attr)
63-
API.LLVMRemoveStringAttributeAtIndex(ref(iter.f), iter.idx, k, Cuint(length(k)))
63+
API.LLVMRemoveStringAttributeAtIndex(ref(iter.f), iter.idx, k, length(k))
6464
end
6565

6666
function Base.length(iter::FunctionAttrSet)
@@ -85,7 +85,7 @@ parameters(f::Function) = FunctionParameterSet(f)
8585
Base.eltype(::FunctionParameterSet) = Argument
8686

8787
Base.getindex(iter::FunctionParameterSet, i) =
88-
Argument(API.LLVMGetParam(ref(iter.f), Cuint(i-1)))
88+
Argument(API.LLVMGetParam(ref(iter.f), i-1))
8989

9090
function Base.iterate(iter::FunctionParameterSet, state=API.LLVMGetFirstParam(ref(iter.f)))
9191
state == C_NULL ? nothing : (Argument(state), API.LLVMGetNextParam(state))

src/core/instructions.jl

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -83,19 +83,19 @@ Base.isempty(md::InstructionMetadataDict) =
8383
!convert(Core.Bool, API.LLVMHasMetadata(ref(md.inst)))
8484

8585
Base.haskey(md::InstructionMetadataDict, kind::MD) =
86-
API.LLVMGetMetadata(ref(md.inst), Cuint(kind)) != C_NULL
86+
API.LLVMGetMetadata(ref(md.inst), kind) != C_NULL
8787

8888
function Base.getindex(md::InstructionMetadataDict, kind::MD)
89-
objref = API.LLVMGetMetadata(ref(md.inst), Cuint(kind))
89+
objref = API.LLVMGetMetadata(ref(md.inst), kind)
9090
objref == C_NULL && throw(KeyError(name))
9191
return MetadataAsValue(objref)
9292
end
9393

9494
Base.setindex!(md::InstructionMetadataDict, node::MetadataAsValue, kind::MD) =
95-
API.LLVMSetMetadata(ref(md.inst), Cuint(kind), ref(node))
95+
API.LLVMSetMetadata(ref(md.inst), kind, ref(node))
9696

9797
Base.delete!(md::InstructionMetadataDict, kind::MD) =
98-
API.LLVMSetMetadata(ref(md.inst), Cuint(kind),
98+
API.LLVMSetMetadata(ref(md.inst), kind,
9999
convert(reftype(MetadataAsValue), C_NULL))
100100

101101

@@ -131,7 +131,7 @@ export callconv, callconv!,
131131

132132
callconv(inst::Instruction) = API.LLVMGetInstructionCallConv(ref(inst))
133133
callconv!(inst::Instruction, cc) =
134-
API.LLVMSetInstructionCallConv(ref(inst), Cuint(cc))
134+
API.LLVMSetInstructionCallConv(ref(inst), cc)
135135

136136
istailcall(inst::Instruction) = convert(Core.Bool, API.LLVMIsTailCall(ref(inst)))
137137
tailcall!(inst::Instruction, bool) = API.LLVMSetTailCall(ref(inst), convert(Bool, bool))
@@ -168,10 +168,10 @@ successors(term::Instruction) = TerminatorSuccessorSet(term)
168168
Base.eltype(::TerminatorSuccessorSet) = BasicBlock
169169

170170
Base.getindex(iter::TerminatorSuccessorSet, i) =
171-
BasicBlock(API.LLVMGetSuccessor(ref(iter.term), Cuint(i-1)))
171+
BasicBlock(API.LLVMGetSuccessor(ref(iter.term), i-1))
172172

173173
Base.setindex!(iter::TerminatorSuccessorSet, bb::BasicBlock, i) =
174-
API.LLVMSetSuccessor(ref(iter.term), Cuint(i-1), blockref(bb))
174+
API.LLVMSetSuccessor(ref(iter.term), i-1, blockref(bb))
175175

176176
function Base.iterate(iter::TerminatorSuccessorSet, i=1)
177177
i >= length(iter) + 1 ? nothing : (iter[i], i+1)
@@ -197,13 +197,13 @@ incoming(phi::Instruction) = PhiIncomingSet(phi)
197197
Base.eltype(::PhiIncomingSet) = Tuple{Value,BasicBlock}
198198

199199
Base.getindex(iter::PhiIncomingSet, i) =
200-
tuple(Value(API.LLVMGetIncomingValue(ref(iter.phi), Cuint(i-1))),
201-
BasicBlock(API.LLVMGetIncomingBlock(ref(iter.phi), Cuint(i-1))))
200+
tuple(Value(API.LLVMGetIncomingValue(ref(iter.phi), i-1)),
201+
BasicBlock(API.LLVMGetIncomingBlock(ref(iter.phi), i-1)))
202202

203203
function Base.append!(iter::PhiIncomingSet, args::Vector{Tuple{V, BasicBlock}} where V <: Value)
204204
vals, blocks = zip(args...)
205205
API.LLVMAddIncoming(ref(iter.phi), collect(ref.(vals)),
206-
collect(ref.(blocks)), Cuint(length(args)))
206+
collect(ref.(blocks)), length(args))
207207
end
208208

209209
Base.push!(iter::PhiIncomingSet, args::Tuple{<:Value, BasicBlock}) = append!(iter, [args])

src/core/metadata.jl

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ identify(::Type{Value}, ::Val{API.LLVMMetadataAsValueValueKind}) = MetadataAsVal
1010

1111
const MDString = MetadataAsValue
1212

13-
MDString(val::String) = MDString(API.LLVMMDString(val, Cuint(length(val))))
13+
MDString(val::String) = MDString(API.LLVMMDString(val, length(val)))
1414

1515
MDString(val::String, ctx::Context) =
16-
MDString(API.LLVMMDStringInContext(ref(ctx), val, Cuint(length(val))))
16+
MDString(API.LLVMMDStringInContext(ref(ctx), val, length(val)))
1717

1818
function Base.convert(::Type{String}, md::MDString)
1919
len = Ref{Cuint}()
@@ -26,11 +26,10 @@ end
2626
const MDNode = MetadataAsValue
2727

2828
MDNode(vals::Vector{T}) where {T<:Value} =
29-
MDNode(API.LLVMMDNode(ref.(vals), Cuint(length(vals))))
29+
MDNode(API.LLVMMDNode(ref.(vals), length(vals)))
3030

3131
MDNode(vals::Vector{T}, ctx::Context) where {T<:Value} =
32-
MDNode(API.LLVMMDNodeInContext(ref(ctx), ref.(vals),
33-
Cuint(length(vals))))
32+
MDNode(API.LLVMMDNodeInContext(ref(ctx), ref.(vals), length(vals)))
3433

3534
function operands(md::MDNode)
3635
nops = API.LLVMGetMDNodeNumOperands(ref(md))

src/core/type.jl

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,9 @@ for T in [:Int1, :Int8, :Int16, :Int32, :Int64, :Int128]
5656
end
5757
end
5858

59-
IntType(bits::Integer) = IntegerType(API.LLVMIntType(Cuint(bits)))
59+
IntType(bits::Integer) = IntegerType(API.LLVMIntType(bits))
6060
IntType(bits::Integer, ctx::Context) =
61-
IntegerType(API.LLVMIntTypeInContext(ref(ctx), Cuint(bits)))
61+
IntegerType(API.LLVMIntTypeInContext(ref(ctx), bits))
6262

6363
width(inttyp::IntegerType) = API.LLVMGetIntTypeWidth(ref(inttyp))
6464

@@ -100,7 +100,7 @@ identify(::Type{LLVMType}, ::Val{API.LLVMFunctionTypeKind}) = FunctionType
100100

101101
FunctionType(rettyp::LLVMType, params::Vector{T}=LLVMType[], vararg::Core.Bool=false) where {T<:LLVMType} =
102102
FunctionType(API.LLVMFunctionType(ref(rettyp), ref.(params),
103-
Cuint(length(params)), convert(Bool, vararg)))
103+
length(params), convert(Bool, vararg)))
104104

105105
isvararg(ft::FunctionType) =
106106
convert(Core.Bool, API.LLVMIsFunctionVarArg(ref(ft)))
@@ -137,8 +137,7 @@ end
137137
identify(::Type{LLVMType}, ::Val{API.LLVMPointerTypeKind}) = PointerType
138138

139139
function PointerType(eltyp::LLVMType, addrspace=0)
140-
return PointerType(API.LLVMPointerType(ref(eltyp),
141-
Cuint(addrspace)))
140+
return PointerType(API.LLVMPointerType(ref(eltyp), addrspace))
142141
end
143142

144143
addrspace(ptrtyp::PointerType) =
@@ -151,7 +150,7 @@ end
151150
identify(::Type{LLVMType}, ::Val{API.LLVMArrayTypeKind}) = ArrayType
152151

153152
function ArrayType(eltyp::LLVMType, count)
154-
return ArrayType(API.LLVMArrayType(ref(eltyp), Cuint(count)))
153+
return ArrayType(API.LLVMArrayType(ref(eltyp), count))
155154
end
156155

157156
Base.length(arrtyp::ArrayType) = API.LLVMGetArrayLength(ref(arrtyp))
@@ -165,7 +164,7 @@ end
165164
identify(::Type{LLVMType}, ::Val{API.LLVMVectorTypeKind}) = VectorType
166165

167166
function VectorType(eltyp::LLVMType, count)
168-
return VectorType(API.LLVMVectorType(ref(eltyp), Cuint(count)))
167+
return VectorType(API.LLVMVectorType(ref(eltyp), count))
169168
end
170169

171170
Base.size(vectyp::VectorType) = API.LLVMGetVectorSize(ref(vectyp))
@@ -185,12 +184,12 @@ function StructType(name::String, ctx::Context=GlobalContext())
185184
end
186185

187186
StructType(elems::Vector{T}, packed::Core.Bool=false) where {T<:LLVMType} =
188-
StructType(API.LLVMStructType(ref.(elems), Cuint(length(elems)),
187+
StructType(API.LLVMStructType(ref.(elems), length(elems),
189188
convert(Bool, packed)))
190189

191190
StructType(elems::Vector{T}, ctx::Context, packed::Core.Bool=false) where {T<:LLVMType} =
192191
StructType(API.LLVMStructTypeInContext(ref(ctx), ref.(elems),
193-
Cuint(length(elems)), convert(Bool, packed)))
192+
length(elems), convert(Bool, packed)))
194193

195194
name(structtyp::StructType) =
196195
unsafe_string(API.LLVMGetStructName(ref(structtyp)))
@@ -201,7 +200,7 @@ isopaque(structtyp::StructType) =
201200

202201
elements!(structtyp::StructType, elems::Vector{T}, packed::Core.Bool=false) where {T<:LLVMType} =
203202
API.LLVMStructSetBody(ref(structtyp), ref.(elems),
204-
Cuint(length(elems)), convert(Bool, packed))
203+
length(elems), convert(Bool, packed))
205204

206205
Base.isempty(@nospecialize(T::StructType)) =
207206
isempty(elements(T)) || all(isempty, elements(T))
@@ -219,7 +218,7 @@ elements(typ::StructType) = StructTypeElementSet(typ)
219218
Base.eltype(::StructTypeElementSet) = LLVMType
220219

221220
Base.getindex(iter::StructTypeElementSet, i) =
222-
LLVMType(API.LLVMStructGetTypeAtIndex(ref(iter.typ), Cuint(i-1)))
221+
LLVMType(API.LLVMStructGetTypeAtIndex(ref(iter.typ), i-1))
223222

224223
function Base.iterate(iter::StructTypeElementSet, i=1)
225224
i >= length(iter) + 1 ? nothing : (iter[i], i+1)

src/core/value/constant.jl

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,7 @@ function ConstantInt(typ::IntegerType, val::Integer, signed=false)
5757
for i in 1:numwords
5858
words[i] = (val >> 64(i-1)) % Culonglong
5959
end
60-
return ConstantInt(
61-
API.LLVMConstIntOfArbitraryPrecision(ref(typ), Cuint(numwords), words))
60+
return ConstantInt(API.LLVMConstIntOfArbitraryPrecision(ref(typ), numwords, words))
6261
end
6362

6463
# NOTE: fixed set where sizeof(T) does match the numerical width
@@ -157,7 +156,7 @@ isdeclaration(val::GlobalValue) = convert(Core.Bool, API.LLVMIsDeclaration(ref(v
157156

158157
linkage(val::GlobalValue) = API.LLVMGetLinkage(ref(val))
159158
linkage!(val::GlobalValue, linkage::API.LLVMLinkage) =
160-
API.LLVMSetLinkage(ref(val), Cuint(linkage))
159+
API.LLVMSetLinkage(ref(val), linkage)
161160

162161
function section(val::GlobalValue)
163162
#=
@@ -178,19 +177,19 @@ section!(val::GlobalValue, sec::String) = API.LLVMSetSection(ref(val), sec)
178177

179178
visibility(val::GlobalValue) = API.LLVMGetVisibility(ref(val))
180179
visibility!(val::GlobalValue, viz::API.LLVMVisibility) =
181-
API.LLVMSetVisibility(ref(val), Cuint(viz))
180+
API.LLVMSetVisibility(ref(val), viz)
182181

183182
dllstorage(val::GlobalValue) = API.LLVMGetDLLStorageClass(ref(val))
184183
dllstorage!(val::GlobalValue, storage::API.LLVMDLLStorageClass) =
185-
API.LLVMSetDLLStorageClass(ref(val), Cuint(storage))
184+
API.LLVMSetDLLStorageClass(ref(val), storage)
186185

187186
unnamed_addr(val::GlobalValue) = convert(Core.Bool, API.LLVMHasUnnamedAddr(ref(val)))
188187
unnamed_addr!(val::GlobalValue, flag::Core.Bool) =
189188
API.LLVMSetUnnamedAddr(ref(val), convert(Bool, flag))
190189

191190
const AlignedValue = Union{GlobalValue,Instruction} # load, store, alloca
192191
alignment(val::AlignedValue) = API.LLVMGetAlignment(ref(val))
193-
alignment!(val::AlignedValue, bytes::Integer) = API.LLVMSetAlignment(ref(val), Cuint(bytes))
192+
alignment!(val::AlignedValue, bytes::Integer) = API.LLVMSetAlignment(ref(val), bytes)
194193

195194

196195
## global variables
@@ -213,8 +212,8 @@ GlobalVariable(mod::Module, typ::LLVMType, name::String) =
213212
GlobalVariable(API.LLVMAddGlobal(ref(mod), ref(typ), name))
214213

215214
GlobalVariable(mod::Module, typ::LLVMType, name::String, addrspace::Integer) =
216-
GlobalVariable( API.LLVMAddGlobalInAddressSpace(ref(mod), ref(typ),
217-
name, Cuint(addrspace)))
215+
GlobalVariable(API.LLVMAddGlobalInAddressSpace(ref(mod), ref(typ),
216+
name, addrspace))
218217

219218
unsafe_delete!(::Module, gv::GlobalVariable) = API.LLVMDeleteGlobal(ref(gv))
220219

@@ -233,7 +232,7 @@ constant!(gv::GlobalVariable, bool) =
233232

234233
threadlocalmode(gv::GlobalVariable) = API.LLVMGetThreadLocalMode(ref(gv))
235234
threadlocalmode!(gv::GlobalVariable, mode) =
236-
API.LLVMSetThreadLocalMode(ref(gv), Cuint(mode))
235+
API.LLVMSetThreadLocalMode(ref(gv), mode)
237236

238237
isextinit(gv::GlobalVariable) =
239238
convert(Core.Bool, API.LLVMIsExternallyInitialized(ref(gv)))

src/core/value/user.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ operands(user::User) = UserOperandSet(user)
1515
Base.eltype(::UserOperandSet) = Value
1616

1717
Base.getindex(iter::UserOperandSet, i::Integer) = # TODO: otherwise unitrange indexing errors
18-
Value(API.LLVMGetOperand(ref(iter.user), Cuint(i-1)))
18+
Value(API.LLVMGetOperand(ref(iter.user), i-1))
1919

2020
Base.setindex!(iter::UserOperandSet, val::Value, i) =
21-
API.LLVMSetOperand(ref(iter.user), Cuint(i-1), ref(val))
21+
API.LLVMSetOperand(ref(iter.user), i-1, ref(val))
2222

2323
function Base.iterate(iter::UserOperandSet, i=1)
2424
i >= length(iter) + 1 ? nothing : (iter[i], i+1)

src/datalayout.jl

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,19 +35,18 @@ byteorder(data::DataLayout) = API.LLVMByteOrder(ref(data))
3535

3636
pointersize(data::DataLayout) = API.LLVMPointerSize(ref(data))
3737
pointersize(data::DataLayout, addrspace::Integer) =
38-
API.LLVMPointerSizeForAS(ref(data), Cuint(addrspace))
38+
API.LLVMPointerSizeForAS(ref(data), addrspace)
3939

4040
intptr(data::DataLayout) = IntegerType(API.LLVMIntPtrType(ref(data)))
4141
intptr(data::DataLayout, addrspace::Integer) =
42-
IntegerType(API.LLVMIntPtrTypeForAS(ref(data), Cuint(addrspace)))
42+
IntegerType(API.LLVMIntPtrTypeForAS(ref(data), addrspace))
4343
intptr(data::DataLayout, ctx::Context) =
4444
IntegerType(API.LLVMIntPtrTypeInContext(ref(ctx), ref(data)))
4545
intptr(data::DataLayout, addrspace::Integer, ctx::Context) =
46-
IntegerType(API.LLVMIntPtrTypeForASInContext(ref(ctx), ref(data),
47-
Cuint(addrspace)))
46+
IntegerType(API.LLVMIntPtrTypeForASInContext(ref(ctx), ref(data), addrspace))
4847

4948
Base.sizeof(data::DataLayout, typ::LLVMType) =
50-
Cuint(API.LLVMSizeOfTypeInBits(ref(data), ref(typ)) / 8)
49+
Int(API.LLVMSizeOfTypeInBits(ref(data), ref(typ)) / 8)
5150
storage_size(data::DataLayout, typ::LLVMType) = API.LLVMStoreSizeOfType(ref(data), ref(typ))
5251
abi_size(data::DataLayout, typ::LLVMType) = API.LLVMABISizeOfType(ref(data), ref(typ))
5352

@@ -57,11 +56,11 @@ frame_alignment(data::DataLayout, typ::LLVMType) =
5756
API.LLVMCallFrameAlignmentOfType(ref(data), ref(typ))
5857
preferred_alignment(data::DataLayout, typ::LLVMType) =
5958
API.LLVMPreferredAlignmentOfType(ref(data), ref(typ))
60-
preferred_alignment(data::DataLayout, var::GlobalVariable) =
59+
preferred_alignment(data::DataLayout, var::GlobalVariable) =
6160
API.LLVMPreferredAlignmentOfGlobal(ref(data), ref(var))
6261

6362
element_at(data::DataLayout, typ::StructType, offset::Integer) =
6463
API.LLVMElementAtOffset(ref(data), ref(typ), Culonglong(offset))
6564

6665
offsetof(data::DataLayout, typ::StructType, element::Integer) =
67-
API.LLVMOffsetOfElement(ref(data), ref(typ), Cuint(element))
66+
API.LLVMOffsetOfElement(ref(data), ref(typ), element)

src/execution.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ function JIT(mod::Module, optlevel::API.LLVMCodeGenOptLevel=API.LLVMCodeGenLevel
9494
out_ref = Ref{API.LLVMExecutionEngineRef}()
9595
out_error = Ref{Cstring}()
9696
status = convert(Core.Bool, API.LLVMCreateJITCompilerForModule(out_ref, ref(mod),
97-
Cuint(optlevel), out_error))
97+
optlevel, out_error))
9898

9999
if status
100100
error = unsafe_string(out_error[])
@@ -129,7 +129,7 @@ end
129129

130130
Base.run(engine::ExecutionEngine, f::Function, args::Vector{GenericValue}=GenericValue[]) =
131131
GenericValue(API.LLVMRunFunction(ref(engine), ref(f),
132-
Cuint(length(args)), ref.(args)))
132+
length(args), ref.(args)))
133133

134134

135135
# ExectutionEngine function lookup

0 commit comments

Comments
 (0)