Skip to content

Commit 4d4cb75

Browse files
authored
[LLVMContext] Add OB_align assume bundle op ID. (llvm#158078)
Assume operand bundles are emitted in a few more places now, including used in various places in libc++. Add a dedicated ID for them. PR: llvm#158078
1 parent 41387ab commit 4d4cb75

File tree

4 files changed

+7
-2
lines changed

4 files changed

+7
-2
lines changed

llvm/include/llvm/IR/LLVMContext.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,8 @@ class LLVMContext {
9797
OB_ptrauth = 7, // "ptrauth"
9898
OB_kcfi = 8, // "kcfi"
9999
OB_convergencectrl = 9, // "convergencectrl"
100+
OB_align = 10, // "align"
101+
OB_LastBundleID = OB_align // Marker for last bundle ID
100102
};
101103

102104
/// getMDKindID - Return a unique non-zero ID for the specified metadata kind.

llvm/lib/IR/LLVMContext.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ static StringRef knownBundleName(unsigned BundleTagID) {
5353
return "kcfi";
5454
case LLVMContext::OB_convergencectrl:
5555
return "convergencectrl";
56+
case LLVMContext::OB_align:
57+
return "align";
5658
default:
5759
llvm_unreachable("unknown bundle id");
5860
}
@@ -76,7 +78,7 @@ LLVMContext::LLVMContext() : pImpl(new LLVMContextImpl(*this)) {
7678
}
7779

7880
for (unsigned BundleTagID = LLVMContext::OB_deopt;
79-
BundleTagID <= LLVMContext::OB_convergencectrl; ++BundleTagID) {
81+
BundleTagID <= LLVMContext::OB_LastBundleID; ++BundleTagID) {
8082
[[maybe_unused]] const auto *Entry =
8183
pImpl->getOrInsertBundleTag(knownBundleName(BundleTagID));
8284
assert(Entry->second == BundleTagID && "operand bundle id drifted!");

llvm/lib/Transforms/Scalar/AlignmentFromAssumptions.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ bool AlignmentFromAssumptionsPass::extractAlignmentInfo(CallInst *I,
163163
const SCEV *&OffSCEV) {
164164
Type *Int64Ty = Type::getInt64Ty(I->getContext());
165165
OperandBundleUse AlignOB = I->getOperandBundleAt(Idx);
166-
if (AlignOB.getTagName() != "align")
166+
if (AlignOB.getTagID() != LLVMContext::OB_align)
167167
return false;
168168
assert(AlignOB.Inputs.size() >= 2);
169169
AAPtr = AlignOB.Inputs[0].get();

llvm/test/Bitcode/operand-bundles-bc-analyzer.ll

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
; CHECK-NEXT: <OPERAND_BUNDLE_TAG
1414
; CHECK-NEXT: <OPERAND_BUNDLE_TAG
1515
; CHECK-NEXT: <OPERAND_BUNDLE_TAG
16+
; CHECK-NEXT: <OPERAND_BUNDLE_TAG
1617
; CHECK-NEXT: </OPERAND_BUNDLE_TAGS_BLOCK
1718

1819
; CHECK: <FUNCTION_BLOCK

0 commit comments

Comments
 (0)