[llvm] Revert "LLVMContext: Cleanup registration of known bundle IDs" (PR #120396)

Jan Patrick Lehr via llvm-commits llvm-commits at lists.llvm.org
Wed Dec 18 02:01:52 PST 2024


https://github.com/jplehr created https://github.com/llvm/llvm-project/pull/120396

Reverts llvm/llvm-project#120359

This broke buildbots with older GCC versions: https://lab.llvm.org/buildbot/#/builders/140/builds/13302

Failure
```
7.815 [4326/32/2685] Building CXX object lib/IR/CMakeFiles/LLVMCore.dir/LLVMContext.cpp.o
FAILED: lib/IR/CMakeFiles/LLVMCore.dir/LLVMContext.cpp.o 
ccache /usr/bin/c++ -DGTEST_HAS_RTTI=0 -D_DEBUG -D_GLIBCXX_ASSERTIONS -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Ilib/IR -I/home/botworker/bbot/builds/openmp-offload-sles-build/llvm.src/llvm/lib/IR -Iinclude -I/home/botworker/bbot/builds/openmp-offload-sles-build/llvm.src/llvm/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -fno-lifetime-dse -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-uninitialized -Wno-nonnull -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wno-comment -Wno-misleading-indentation -fdiagnostics-color -ffunction-sections -fdata-sections -O3 -DNDEBUG  -fno-exceptions -funwind-tables -fno-rtti -UNDEBUG -std=c++1z -MD -MT lib/IR/CMakeFiles/LLVMCore.dir/LLVMContext.cpp.o -MF lib/IR/CMakeFiles/LLVMCore.dir/LLVMContext.cpp.o.d -o lib/IR/CMakeFiles/LLVMCore.dir/LLVMContext.cpp.o -c /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.src/llvm/lib/IR/LLVMContext.cpp
In file included from /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.src/llvm/include/llvm/ADT/Hashing.h:49:0,
                 from /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.src/llvm/include/llvm/ADT/ArrayRef.h:12,
                 from /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.src/llvm/lib/IR/ConstantsContext.h:17,
                 from /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.src/llvm/lib/IR/LLVMContextImpl.h:17,
                 from /home/botworker/bbot/builds/openmp-offload-sles-build/llvm.src/llvm/lib/IR/LLVMContext.cpp:15:
/home/botworker/bbot/builds/openmp-offload-sles-build/llvm.src/llvm/lib/IR/LLVMContext.cpp: In function ‘constexpr llvm::StringRef knownBundleName(unsigned int)’:
/home/botworker/bbot/builds/openmp-offload-sles-build/llvm.src/llvm/include/llvm/Support/ErrorHandling.h:144:36: error: call to non-constexpr function ‘void llvm::llvm_unreachable_internal(const char*, const char*, unsigned int)’
   ::llvm::llvm_unreachable_internal(msg, __FILE__, __LINE__)
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
/home/botworker/bbot/builds/openmp-offload-sles-build/llvm.src/llvm/lib/IR/LLVMContext.cpp:60:3: note: in expansion of macro ‘llvm_unreachable’
   llvm_unreachable("covered switch");
   ^~~~~~~~~~~~~~~~
```

>From 00f4bf5a582298ec942d86bf69571dfe66354598 Mon Sep 17 00:00:00 2001
From: Jan Patrick Lehr <JanPatrick.Lehr at amd.com>
Date: Wed, 18 Dec 2024 10:58:55 +0100
Subject: [PATCH] Revert "LLVMContext: Cleanup registration of known bundle IDs
 (#120359)"

This reverts commit 3666de9c8e3bfd3a3b604e0e434341ec49cb3a6d.
---
 llvm/lib/IR/LLVMContext.cpp | 85 ++++++++++++++++++++++---------------
 1 file changed, 50 insertions(+), 35 deletions(-)

diff --git a/llvm/lib/IR/LLVMContext.cpp b/llvm/lib/IR/LLVMContext.cpp
index 9acc15f11316a2..eb51a751bfa088 100644
--- a/llvm/lib/IR/LLVMContext.cpp
+++ b/llvm/lib/IR/LLVMContext.cpp
@@ -31,35 +31,6 @@
 
 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.
@@ -75,12 +46,56 @@ LLVMContext::LLVMContext() : pImpl(new LLVMContextImpl(*this)) {
     (void)ID;
   }
 
-  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!");
-  }
+  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;
 
   SyncScope::ID SingleThreadSSID =
       pImpl->getOrInsertSyncScopeID("singlethread");



More information about the llvm-commits mailing list