Implement safe API for operand bundles. #524
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Implement a safe API wrapping the operand bundles manipulation calls in
llvm-sys
. The feature requires llvm18+.Building
call
instructions is done with the newBuilder::build_direct_call_with_operand_bundles
andBuilder::build_indirect_call_with_operand_bundles
.Since only
call
andinvoke
instructions support operand bundles, introspection methods are implemented onCallSiteValue
.CallSiteValue::get_operand_bundles()
produces an iterator ofOperandBundle
values, andOperandBundle::get_args()
iterates over a bundle's arguments.OperandBundle::tag()
retrieves the bundle's tag as a string slice.Related Issue
Resolves #523
How This Has Been Tested
Ran tests for LLVM 16 and 18.
Checklist