[llvm] LLVMContext: Cleanup registration of known bundle IDs (PR #120359)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Tue Dec 17 21:12:26 PST 2024
https://github.com/arsenm created https://github.com/llvm/llvm-project/pull/120359
None
>From adf4c102c3de1ac69c51d8af151ff61c4b82b0ad Mon Sep 17 00:00:00 2001
From: Matt Arsenault <Matthew.Arsenault at amd.com>
Date: Wed, 18 Dec 2024 12:09:25 +0700
Subject: [PATCH] LLVMContext: Cleanup registration of known bundle IDs
---
llvm/lib/IR/LLVMContext.cpp | 85 +++++++++++++++----------------------
1 file changed, 35 insertions(+), 50 deletions(-)
diff --git a/llvm/lib/IR/LLVMContext.cpp b/llvm/lib/IR/LLVMContext.cpp
index eb51a751bfa088..0a90bcbf323e8b 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:
+ return "";
+ }
+
+ 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");
More information about the llvm-commits
mailing list