Skip to content

Commit 8a3f215

Browse files
authored
Merge pull request #258 from maleadt/tb/delete
Add a wrapper for llvm::Function's deleteBody.
2 parents c9492da + 33f460f commit 8a3f215

File tree

7 files changed

+18
-3
lines changed

7 files changed

+18
-3
lines changed

Manifest.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@ version = "1.3.0"
3434

3535
[[LLVMExtra_jll]]
3636
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
37-
git-tree-sha1 = "2d5a0044d6505f4771b5c82de87393f0c9741154"
37+
git-tree-sha1 = "873e7962f14f6bdd8a0e10552d964ec0a7c69f3b"
3838
uuid = "dad2f222-ce93-54a1-a47d-0025e8a3acab"
39-
version = "0.0.8+0"
39+
version = "0.0.9+0"
4040

4141
[[LibCURL]]
4242
deps = ["LibCURL_jll", "MozillaCACerts_jll"]

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,5 @@ Unicode = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5"
1111

1212
[compat]
1313
CEnum = "0.2, 0.3, 0.4"
14-
LLVMExtra_jll = "~0.0.8"
14+
LLVMExtra_jll = "~0.0.9"
1515
julia = "1.6"

deps/LLVMExtra/include/LLVMExtra.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,5 +131,7 @@ void LLVMCloneFunctionInto(LLVMValueRef NewFunc, LLVMValueRef OldFunc,
131131
LLVMValueRef (*Materializer)(LLVMValueRef, void *),
132132
void *MaterializerData);
133133

134+
void LLVMFunctionDeleteBody(LLVMValueRef Func);
135+
134136
LLVM_C_EXTERN_C_END
135137
#endif

deps/LLVMExtra/lib/llvm-api.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -414,3 +414,7 @@ void LLVMCloneFunctionInto(LLVMValueRef NewFunc, LLVMValueRef OldFunc,
414414
TypeMapper ? &TheTypeRemapper : nullptr,
415415
Materializer ? &TheMaterializer : nullptr);
416416
}
417+
418+
void LLVMFunctionDeleteBody(LLVMValueRef Func) {
419+
unwrap<Function>(Func)->deleteBody();
420+
}

lib/libLLVM_extra.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,3 +334,7 @@ end
334334
function LLVMCloneFunctionInto(NewFunc, OldFunc, ValueMap, ValueMapElements, Changes, NameSuffix, TypeMapper, TypeMapperData, Materializer, MaterializerData)
335335
ccall((:LLVMCloneFunctionInto, libLLVMExtra), Cvoid, (LLVMValueRef, LLVMValueRef, Ptr{LLVMValueRef}, Cuint, LLVMCloneFunctionChangeType, Cstring, Ptr{Cvoid}, Ptr{Cvoid}, Ptr{Cvoid}, Ptr{Cvoid}), NewFunc, OldFunc, ValueMap, ValueMapElements, Changes, NameSuffix, TypeMapper, TypeMapperData, Materializer, MaterializerData)
336336
end
337+
338+
function LLVMFunctionDeleteBody(Func)
339+
ccall((:LLVMFunctionDeleteBody, libLLVMExtra), Cvoid, (LLVMValueRef,), Func)
340+
end

src/core/function.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ identify(::Type{Value}, ::Val{API.LLVMFunctionValueKind}) = Function
1010
Function(mod::Module, name::String, ft::FunctionType) =
1111
Function(API.LLVMAddFunction(mod, name, ft))
1212

13+
Base.empty!(f::Function) = API.LLVMFunctionDeleteBody(f)
14+
1315
unsafe_delete!(::Module, f::Function) = API.LLVMDeleteFunction(f)
1416

1517
function personality(f::Function)

test/core.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1018,6 +1018,9 @@ LLVM.Module("SomeModule"; ctx) do mod
10181018

10191019
@test collect(bbs) == [entrybb]
10201020
end
1021+
1022+
empty!(fn)
1023+
@test isempty(blocks(fn))
10211024
end
10221025
end
10231026

0 commit comments

Comments
 (0)