[llvm] LLVMContext: Cleanup registration of known bundle IDs (PR #120359)

via llvm-commits llvm-commits at lists.llvm.org
Tue Dec 17 21:13:06 PST 2024


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-llvm-ir

Author: Matt Arsenault (arsenm)

<details>
<summary>Changes</summary>



---
Full diff: https://github.com/llvm/llvm-project/pull/120359.diff


1 Files Affected:

- (modified) llvm/lib/IR/LLVMContext.cpp (+35-50) 


``````````diff
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");

``````````

</details>


https://github.com/llvm/llvm-project/pull/120359


More information about the llvm-commits mailing list