aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/IR/LLVMContext.cpp
diff options
context:
space:
mode:
authorMatt Arsenault <Matthew.Arsenault@amd.com>2024-12-18 14:41:55 +0700
committerGitHub <noreply@github.com>2024-12-18 14:41:55 +0700
commit3666de9c8e3bfd3a3b604e0e434341ec49cb3a6d (patch)
tree0b5a07efd3c033d964efaae9c23eb4f317421b03 /llvm/lib/IR/LLVMContext.cpp
parentd9f3fae2fbabe0046bfb5888a71cf878830fddc1 (diff)
downloadllvm-3666de9c8e3bfd3a3b604e0e434341ec49cb3a6d.zip
llvm-3666de9c8e3bfd3a3b604e0e434341ec49cb3a6d.tar.gz
llvm-3666de9c8e3bfd3a3b604e0e434341ec49cb3a6d.tar.bz2
LLVMContext: Cleanup registration of known bundle IDs (#120359)
Diffstat (limited to 'llvm/lib/IR/LLVMContext.cpp')
-rw-r--r--llvm/lib/IR/LLVMContext.cpp85
1 files changed, 35 insertions, 50 deletions
diff --git a/llvm/lib/IR/LLVMContext.cpp b/llvm/lib/IR/LLVMContext.cpp
index eb51a75..9acc15f 100644
--- a/llvm/lib/IR/LLVMContext.cpp
+++ b/llvm/lib/IR/LLVMContext.cpp
@@ -31,6 +31,35 @@
using namespace llvm;
+static constexpr StringRef knownBundleName(unsigned BundleTagID) {
+ switch (BundleTagID) {
+ case LLVMContext::OB_deopt:
+ return "deopt";
+ case LLVMContext::OB_funclet:
+ return "funclet";
+ case LLVMContext::OB_gc_transition:
+ return "gc-transition";
+ case LLVMContext::OB_cfguardtarget:
+ return "cfguardtarget";
+ case LLVMContext::OB_preallocated:
+ return "preallocated";
+ case LLVMContext::OB_gc_live:
+ return "gc-live";
+ case LLVMContext::OB_clang_arc_attachedcall:
+ return "clang.arc.attachedcall";
+ case LLVMContext::OB_ptrauth:
+ return "ptrauth";
+ case LLVMContext::OB_kcfi:
+ return "kcfi";
+ case LLVMContext::OB_convergencectrl:
+ return "convergencectrl";
+ default:
+ llvm_unreachable("unknown bundle id");
+ }
+
+ llvm_unreachable("covered switch");
+}
+
LLVMContext::LLVMContext() : pImpl(new LLVMContextImpl(*this)) {
// Create the fixed metadata kinds. This is done in the same order as the
// MD_* enum values so that they correspond.
@@ -46,56 +75,12 @@ LLVMContext::LLVMContext() : pImpl(new LLVMContextImpl(*this)) {
(void)ID;
}
- auto *DeoptEntry = pImpl->getOrInsertBundleTag("deopt");
- assert(DeoptEntry->second == LLVMContext::OB_deopt &&
- "deopt operand bundle id drifted!");
- (void)DeoptEntry;
-
- auto *FuncletEntry = pImpl->getOrInsertBundleTag("funclet");
- assert(FuncletEntry->second == LLVMContext::OB_funclet &&
- "funclet operand bundle id drifted!");
- (void)FuncletEntry;
-
- auto *GCTransitionEntry = pImpl->getOrInsertBundleTag("gc-transition");
- assert(GCTransitionEntry->second == LLVMContext::OB_gc_transition &&
- "gc-transition operand bundle id drifted!");
- (void)GCTransitionEntry;
-
- auto *CFGuardTargetEntry = pImpl->getOrInsertBundleTag("cfguardtarget");
- assert(CFGuardTargetEntry->second == LLVMContext::OB_cfguardtarget &&
- "cfguardtarget operand bundle id drifted!");
- (void)CFGuardTargetEntry;
-
- auto *PreallocatedEntry = pImpl->getOrInsertBundleTag("preallocated");
- assert(PreallocatedEntry->second == LLVMContext::OB_preallocated &&
- "preallocated operand bundle id drifted!");
- (void)PreallocatedEntry;
-
- auto *GCLiveEntry = pImpl->getOrInsertBundleTag("gc-live");
- assert(GCLiveEntry->second == LLVMContext::OB_gc_live &&
- "gc-transition operand bundle id drifted!");
- (void)GCLiveEntry;
-
- auto *ClangAttachedCall =
- pImpl->getOrInsertBundleTag("clang.arc.attachedcall");
- assert(ClangAttachedCall->second == LLVMContext::OB_clang_arc_attachedcall &&
- "clang.arc.attachedcall operand bundle id drifted!");
- (void)ClangAttachedCall;
-
- auto *PtrauthEntry = pImpl->getOrInsertBundleTag("ptrauth");
- assert(PtrauthEntry->second == LLVMContext::OB_ptrauth &&
- "ptrauth operand bundle id drifted!");
- (void)PtrauthEntry;
-
- auto *KCFIEntry = pImpl->getOrInsertBundleTag("kcfi");
- assert(KCFIEntry->second == LLVMContext::OB_kcfi &&
- "kcfi operand bundle id drifted!");
- (void)KCFIEntry;
-
- auto *ConvergenceCtrlEntry = pImpl->getOrInsertBundleTag("convergencectrl");
- assert(ConvergenceCtrlEntry->second == LLVMContext::OB_convergencectrl &&
- "convergencectrl operand bundle id drifted!");
- (void)ConvergenceCtrlEntry;
+ for (unsigned BundleTagID = LLVMContext::OB_deopt;
+ BundleTagID <= LLVMContext::OB_convergencectrl; ++BundleTagID) {
+ [[maybe_unused]] const auto *Entry =
+ pImpl->getOrInsertBundleTag(knownBundleName(BundleTagID));
+ assert(Entry->second == BundleTagID && "operand bundle id drifted!");
+ }
SyncScope::ID SingleThreadSSID =
pImpl->getOrInsertSyncScopeID("singlethread");