Skip to content

Commit 3666de9

Browse files
authored
LLVMContext: Cleanup registration of known bundle IDs (#120359)
1 parent d9f3fae commit 3666de9

File tree

1 file changed

+35
-50
lines changed

1 file changed

+35
-50
lines changed

llvm/lib/IR/LLVMContext.cpp

Lines changed: 35 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,35 @@
3131

3232
using namespace llvm;
3333

34+
static constexpr StringRef knownBundleName(unsigned BundleTagID) {
35+
switch (BundleTagID) {
36+
case LLVMContext::OB_deopt:
37+
return "deopt";
38+
case LLVMContext::OB_funclet:
39+
return "funclet";
40+
case LLVMContext::OB_gc_transition:
41+
return "gc-transition";
42+
case LLVMContext::OB_cfguardtarget:
43+
return "cfguardtarget";
44+
case LLVMContext::OB_preallocated:
45+
return "preallocated";
46+
case LLVMContext::OB_gc_live:
47+
return "gc-live";
48+
case LLVMContext::OB_clang_arc_attachedcall:
49+
return "clang.arc.attachedcall";
50+
case LLVMContext::OB_ptrauth:
51+
return "ptrauth";
52+
case LLVMContext::OB_kcfi:
53+
return "kcfi";
54+
case LLVMContext::OB_convergencectrl:
55+
return "convergencectrl";
56+
default:
57+
llvm_unreachable("unknown bundle id");
58+
}
59+
60+
llvm_unreachable("covered switch");
61+
}
62+
3463
LLVMContext::LLVMContext() : pImpl(new LLVMContextImpl(*this)) {
3564
// Create the fixed metadata kinds. This is done in the same order as the
3665
// MD_* enum values so that they correspond.
@@ -46,56 +75,12 @@ LLVMContext::LLVMContext() : pImpl(new LLVMContextImpl(*this)) {
4675
(void)ID;
4776
}
4877

49-
auto *DeoptEntry = pImpl->getOrInsertBundleTag("deopt");
50-
assert(DeoptEntry->second == LLVMContext::OB_deopt &&
51-
"deopt operand bundle id drifted!");
52-
(void)DeoptEntry;
53-
54-
auto *FuncletEntry = pImpl->getOrInsertBundleTag("funclet");
55-
assert(FuncletEntry->second == LLVMContext::OB_funclet &&
56-
"funclet operand bundle id drifted!");
57-
(void)FuncletEntry;
58-
59-
auto *GCTransitionEntry = pImpl->getOrInsertBundleTag("gc-transition");
60-
assert(GCTransitionEntry->second == LLVMContext::OB_gc_transition &&
61-
"gc-transition operand bundle id drifted!");
62-
(void)GCTransitionEntry;
63-
64-
auto *CFGuardTargetEntry = pImpl->getOrInsertBundleTag("cfguardtarget");
65-
assert(CFGuardTargetEntry->second == LLVMContext::OB_cfguardtarget &&
66-
"cfguardtarget operand bundle id drifted!");
67-
(void)CFGuardTargetEntry;
68-
69-
auto *PreallocatedEntry = pImpl->getOrInsertBundleTag("preallocated");
70-
assert(PreallocatedEntry->second == LLVMContext::OB_preallocated &&
71-
"preallocated operand bundle id drifted!");
72-
(void)PreallocatedEntry;
73-
74-
auto *GCLiveEntry = pImpl->getOrInsertBundleTag("gc-live");
75-
assert(GCLiveEntry->second == LLVMContext::OB_gc_live &&
76-
"gc-transition operand bundle id drifted!");
77-
(void)GCLiveEntry;
78-
79-
auto *ClangAttachedCall =
80-
pImpl->getOrInsertBundleTag("clang.arc.attachedcall");
81-
assert(ClangAttachedCall->second == LLVMContext::OB_clang_arc_attachedcall &&
82-
"clang.arc.attachedcall operand bundle id drifted!");
83-
(void)ClangAttachedCall;
84-
85-
auto *PtrauthEntry = pImpl->getOrInsertBundleTag("ptrauth");
86-
assert(PtrauthEntry->second == LLVMContext::OB_ptrauth &&
87-
"ptrauth operand bundle id drifted!");
88-
(void)PtrauthEntry;
89-
90-
auto *KCFIEntry = pImpl->getOrInsertBundleTag("kcfi");
91-
assert(KCFIEntry->second == LLVMContext::OB_kcfi &&
92-
"kcfi operand bundle id drifted!");
93-
(void)KCFIEntry;
94-
95-
auto *ConvergenceCtrlEntry = pImpl->getOrInsertBundleTag("convergencectrl");
96-
assert(ConvergenceCtrlEntry->second == LLVMContext::OB_convergencectrl &&
97-
"convergencectrl operand bundle id drifted!");
98-
(void)ConvergenceCtrlEntry;
78+
for (unsigned BundleTagID = LLVMContext::OB_deopt;
79+
BundleTagID <= LLVMContext::OB_convergencectrl; ++BundleTagID) {
80+
[[maybe_unused]] const auto *Entry =
81+
pImpl->getOrInsertBundleTag(knownBundleName(BundleTagID));
82+
assert(Entry->second == BundleTagID && "operand bundle id drifted!");
83+
}
9984

10085
SyncScope::ID SingleThreadSSID =
10186
pImpl->getOrInsertSyncScopeID("singlethread");

0 commit comments

Comments
 (0)