Skip to content

Commit 76b8d24

Browse files
committed
Perform conversions to OperandBundleDef automatically.
1 parent 7068e81 commit 76b8d24

File tree

2 files changed

+11
-0
lines changed

2 files changed

+11
-0
lines changed

src/irbuilder.jl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -347,6 +347,13 @@ call!(builder::Builder, Fn::Value, Args::Vector{<:Value},
347347
Instruction(API.LLVMBuildCallWithOpBundle(builder, Fn, Args, length(Args), Bundles,
348348
length(Bundles), Name))
349349

350+
# convenience function that performs the OperandBundle(Iterator|Use)->Def conversion
351+
call!(builder::Builder, Fn::Value, Args::Vector{<:Value},
352+
Bundles, Name::String="") =
353+
Instruction(API.LLVMBuildCallWithOpBundle(builder, Fn, Args, length(Args),
354+
OperandBundleDef.(Bundles),
355+
length(Bundles), Name))
356+
350357
va_arg!(builder::Builder, List::Value, Ty::LLVMType, Name::String="") =
351358
Instruction(API.LLVMBuildVAArg(builder, List, Ty, Name))
352359

test/instructions.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -382,6 +382,10 @@ end
382382
@test LLVM.tag_name(bundle3) == "unknown"
383383
@test LLVM.inputs(bundle3) == inputs
384384
@test sprint(io->print(io, bundle3)) == "\"unknown\"(i32 1, i64 2)"
385+
386+
# creating a call should perform the necessary conversion automatically
387+
call!(builder, functions(mod)["x"], Value[], operand_bundles(inst))
388+
call!(builder, functions(mod)["x"], Value[], [bundle2])
385389
end
386390
end
387391
end

0 commit comments

Comments
 (0)