Skip to content

Commit f38eead

Browse files
authored
Merge pull request #520 from JuliaLLVM/tb/rm_retestitems
Get rid of ReTestItems.jl.
1 parent bdaafb3 commit f38eead

35 files changed

+102
-84
lines changed

examples/generated.jl

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,22 @@ end
1717
T_ptr = LLVM.PointerType(eltyp)
1818

1919
# create a function
20-
paramtyps = [T_int, T_int]
20+
paramtyps = if VERSION >= v"1.12-"
21+
[T_ptr, T_int]
22+
else
23+
[T_int, T_int]
24+
end
2125
llvmf, _ = create_function(eltyp, paramtyps)
2226

2327
# generate IR
2428
@dispose builder=IRBuilder() begin
2529
entry = BasicBlock(llvmf, "entry")
2630
position!(builder, entry)
2731

28-
ptr = inttoptr!(builder, parameters(llvmf)[1], T_ptr)
32+
ptr = parameters(llvmf)[1]
33+
if value_type(ptr) isa LLVM.IntegerType
34+
ptr = inttoptr!(builder, ptr, T_ptr)
35+
end
2936

3037
ptr = gep!(builder, eltyp, ptr, [parameters(llvmf)[2]])
3138
val = load!(builder, eltyp, ptr)

src/buffer.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ function MemoryBufferFile(path::String)
5959
throw(LLVMException(error))
6060
end
6161

62-
MemoryBuffer(out_ref[])
62+
mark_alloc(MemoryBuffer(out_ref[]))
6363
end
6464

6565
function MemoryBufferFile(f::Core.Function, args...; kwargs...)

src/core/module.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ end
243243
Convert the given module to a memory buffer containing its bitcode.
244244
"""
245245
Base.convert(::Type{MemoryBuffer}, mod::Module) =
246-
MemoryBuffer(API.LLVMWriteBitcodeToMemoryBuffer(mod))
246+
mark_alloc(MemoryBuffer(API.LLVMWriteBitcodeToMemoryBuffer(mod)))
247247

248248
"""
249249
convert(::Type{Vector}, mod::Module)

src/execution.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ Base.convert(::Type{T}, val::GenericValue) where {T<:Unsigned} =
7272
Create a generic value from a floating point number of the given type.
7373
"""
7474
GenericValue(typ::FloatingPointType, N::AbstractFloat) =
75-
GenericValue(API.LLVMCreateGenericValueOfFloat(typ, convert(Cdouble, N)))
75+
mark_alloc(GenericValue(API.LLVMCreateGenericValueOfFloat(typ, convert(Cdouble, N))))
7676

7777
# NOTE: this ugly three-arg convert is needed to match the C API,
7878
# which uses the type to call the correct C++ function.
@@ -93,7 +93,7 @@ Base.convert(::Type{T}, val::GenericValue, typ::LLVMType) where {T<:AbstractFloa
9393
Create a generic value from a pointer.
9494
"""
9595
GenericValue(ptr::Ptr) =
96-
GenericValue(API.LLVMCreateGenericValueOfPointer(convert(Ptr{Cvoid}, ptr)))
96+
mark_alloc(GenericValue(API.LLVMCreateGenericValueOfPointer(convert(Ptr{Cvoid}, ptr))))
9797

9898
"""
9999
convert(::Type{Ptr{T}}, val::GenericValue)
@@ -234,8 +234,8 @@ end
234234
Run the given function with the given arguments in the execution engine.
235235
"""
236236
Base.run(engine::ExecutionEngine, f::Function, args::Vector{GenericValue}=GenericValue[]) =
237-
GenericValue(API.LLVMRunFunction(engine, f,
238-
length(args), args))
237+
mark_alloc(GenericValue(API.LLVMRunFunction(engine, f,
238+
length(args), args)))
239239

240240
"""
241241
lookup(engine::ExecutionEngine, fn::String)

src/executionengine/lljit.jl

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
@checked struct LLJITBuilder
22
ref::API.LLVMOrcLLJITBuilderRef
33
end
4-
Base.unsafe_convert(::Type{API.LLVMOrcLLJITBuilderRef}, builder::LLJITBuilder) = builder.ref
4+
Base.unsafe_convert(::Type{API.LLVMOrcLLJITBuilderRef}, builder::LLJITBuilder) = mark_use(builder).ref
55

66
@checked mutable struct LLJIT
77
ref::API.LLVMOrcLLJITRef
88
end
9-
Base.unsafe_convert(::Type{API.LLVMOrcLLJITRef}, lljit::LLJIT) = lljit.ref
9+
Base.unsafe_convert(::Type{API.LLVMOrcLLJITRef}, lljit::LLJIT) = mark_use(lljit).ref
1010

1111
function LLJITBuilder()
1212
ref = API.LLVMOrcCreateLLJITBuilder()
13-
LLJITBuilder(ref)
13+
mark_alloc(LLJITBuilder(ref))
1414
end
1515

1616
function dispose(builder::LLJITBuilder)
17-
API.LLVMOrcDisposeLLJITBuilder(builder)
17+
mark_dispose(API.LLVMOrcDisposeLLJITBuilder, builder)
1818
end
1919

2020
function targetmachinebuilder!(builder::LLJITBuilder, tmb::TargetMachineBuilder)
@@ -36,11 +36,12 @@ Creates a LLJIT stack based on the provided builder.
3636
function LLJIT(builder::LLJITBuilder)
3737
ref = Ref{API.LLVMOrcLLJITRef}()
3838
@check API.LLVMOrcCreateLLJIT(ref, builder)
39-
LLJIT(ref[])
39+
mark_dispose(builder)
40+
mark_alloc(LLJIT(ref[]))
4041
end
4142

4243
function dispose(lljit::LLJIT)
43-
API.LLVMOrcDisposeLLJIT(lljit)
44+
mark_dispose(API.LLVMOrcDisposeLLJIT, lljit)
4445
end
4546

4647
"""

src/executionengine/ts_module.jl

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ A thread-safe version of [`Context`](@ref).
88
@checked struct ThreadSafeContext
99
ref::API.LLVMOrcThreadSafeContextRef
1010
end
11-
Base.unsafe_convert(::Type{API.LLVMOrcThreadSafeContextRef}, ctx::ThreadSafeContext) = ctx.ref
11+
Base.unsafe_convert(::Type{API.LLVMOrcThreadSafeContextRef}, ctx::ThreadSafeContext) = mark_use(ctx).ref
1212

1313
"""
1414
ThreadSafeContext(; opaque_pointers=nothing)
@@ -19,7 +19,7 @@ Create a new thread-safe context. The behavior of `opaque_pointers` is the same
1919
This object needs to be disposed of using [`dispose(::ThreadSafeContext)`](@ref).
2020
"""
2121
function ThreadSafeContext(; opaque_pointers=nothing)
22-
ts_ctx = ThreadSafeContext(API.LLVMOrcCreateNewThreadSafeContext())
22+
ts_ctx = mark_alloc(ThreadSafeContext(API.LLVMOrcCreateNewThreadSafeContext()))
2323
if opaque_pointers !== nothing
2424
opaque_pointers!(context(ts_ctx), opaque_pointers)
2525
end
@@ -58,7 +58,7 @@ Dispose of the thread-safe context, releasing all resources associated with it.
5858
"""
5959
function dispose(ctx::ThreadSafeContext)
6060
deactivate(ctx)
61-
API.LLVMOrcDisposeThreadSafeContext(ctx)
61+
mark_dispose(API.LLVMOrcDisposeThreadSafeContext, ctx)
6262
end
6363

6464
"""
@@ -95,11 +95,12 @@ function ThreadSafeModule(mod::Module)
9595
mod = context!(context(ts_context())) do
9696
parse(Module, bitcode)
9797
end
98+
dispose(bitcode)
9899
end
99100
@assert context(mod) == context(ts_context())
100101

101102
ref = API.LLVMOrcCreateNewThreadSafeModule(mod, ts_context())
102-
tsm = ThreadSafeModule(ref)
103+
tsm = mark_alloc(ThreadSafeModule(ref))
103104
mark_dispose(mod)
104105
return tsm
105106
end
@@ -127,7 +128,7 @@ end
127128
Dispose of the thread-safe module, releasing all resources associated with it.
128129
"""
129130
function dispose(mod::ThreadSafeModule)
130-
API.LLVMOrcDisposeThreadSafeModule(mod)
131+
mark_dispose(API.LLVMOrcDisposeThreadSafeModule, mod)
131132
end
132133

133134
mutable struct ThreadSafeModuleCallback

src/orc.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,7 @@ end
252252
Base.unsafe_convert(::Type{API.LLVMOrcMaterializationResponsibilityRef}, mr::MaterializationResponsibility) = mr.ref
253253

254254
function emit(il::IRTransformLayer, mr::MaterializationResponsibility, tsm::ThreadSafeModule)
255+
mark_dispose(tsm)
255256
API.LLVMOrcIRTransformLayerEmit(il, mr, tsm)
256257
end
257258

@@ -455,6 +456,7 @@ function emit(il::IRCompileLayer, mr::MaterializationResponsibility, tsm::Thread
455456
decorate_module(mod)
456457
end
457458
end
459+
mark_dispose(tsm)
458460
API.LLVMOrcIRCompileLayerEmit(il, mr, tsm)
459461
end
460462

src/transform.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ export PassManagerBuilder, dispose,
99
ref::API.LLVMPassManagerBuilderRef
1010
end
1111

12-
Base.unsafe_convert(::Type{API.LLVMPassManagerBuilderRef}, pmb::PassManagerBuilder) = pmb.ref
12+
Base.unsafe_convert(::Type{API.LLVMPassManagerBuilderRef}, pmb::PassManagerBuilder) = mark_use(pmb).ref
1313

14-
PassManagerBuilder() = PassManagerBuilder(API.LLVMPassManagerBuilderCreate())
14+
PassManagerBuilder() = mark_alloc(PassManagerBuilder(API.LLVMPassManagerBuilderCreate()))
1515

16-
dispose(pmb::PassManagerBuilder) = API.LLVMPassManagerBuilderDispose(pmb)
16+
dispose(pmb::PassManagerBuilder) = mark_dispose(API.LLVMPassManagerBuilderDispose, pmb)
1717

1818
function PassManagerBuilder(f::Core.Function)
1919
pmb = PassManagerBuilder()

test/Kaleidoscope_tests.jl renamed to test/Kaleidoscope.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
@testitem "Kaleidoscope" begin
1+
@testset "Kaleidoscope" begin
22

33
include(joinpath(@__DIR__, "..", "examples", "Kaleidoscope", "Kaleidoscope.jl"))
44

test/Project.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595"
33
BFloat16s = "ab4f0b2a-ad5b-11e8-123f-65d77653426b"
44
IOCapture = "b5f81e59-6552-4d32-b1f0-c071b021bf89"
55
InteractiveUtils = "b77e0a4c-d291-57a0-90e8-8db25a27a240"
6-
ReTestItems = "817f1d60-ba6b-4fd5-9520-3cf149f6a823"
76
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
87
Unicode = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5"
98

0 commit comments

Comments
 (0)