[llvm] [GISel] Make RegBank constructor constexpr. NFC (PR #71109)

Craig Topper via llvm-commits llvm-commits at lists.llvm.org
Thu Nov 2 17:55:41 PDT 2023


https://github.com/topperc updated https://github.com/llvm/llvm-project/pull/71109

>From 188f1309daadac0a80982ea862dc9c25ec115459 Mon Sep 17 00:00:00 2001
From: Craig Topper <craig.topper at sifive.com>
Date: Thu, 2 Nov 2023 13:53:45 -0700
Subject: [PATCH] [GISel] Make RegBank constructor constexpr. NFC

RegBanks are constructed as global objects. Making the constructor
constexpr helps the compiler constructor it without a global constructor.

clang's optimizer seems to figure this out on its own, but at
least gcc 8 does not.
---
 llvm/include/llvm/CodeGen/RegisterBank.h    | 4 ++--
 llvm/utils/TableGen/RegisterBankEmitter.cpp | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/llvm/include/llvm/CodeGen/RegisterBank.h b/llvm/include/llvm/CodeGen/RegisterBank.h
index 3862b51a1320222..3efd896ce059213 100644
--- a/llvm/include/llvm/CodeGen/RegisterBank.h
+++ b/llvm/include/llvm/CodeGen/RegisterBank.h
@@ -36,8 +36,8 @@ class RegisterBank {
   friend RegisterBankInfo;
 
 public:
-  RegisterBank(unsigned ID, const char *Name, const uint32_t *CoveredClasses,
-               unsigned NumRegClasses)
+  constexpr RegisterBank(unsigned ID, const char *Name,
+                         const uint32_t *CoveredClasses, unsigned NumRegClasses)
       : ID(ID), NumRegClasses(NumRegClasses), Name(Name),
         CoveredClasses(CoveredClasses) {}
 
diff --git a/llvm/utils/TableGen/RegisterBankEmitter.cpp b/llvm/utils/TableGen/RegisterBankEmitter.cpp
index 60c3fcdba70ed88..f851d9a79870b45 100644
--- a/llvm/utils/TableGen/RegisterBankEmitter.cpp
+++ b/llvm/utils/TableGen/RegisterBankEmitter.cpp
@@ -244,7 +244,7 @@ void RegisterBankEmitter::emitBaseClassImplementation(
   for (const auto &Bank : Banks) {
     std::string QualifiedBankID =
         (TargetName + "::" + Bank.getEnumeratorName()).str();
-    OS << "const RegisterBank " << Bank.getInstanceVarName() << "(/* ID */ "
+    OS << "constexpr RegisterBank " << Bank.getInstanceVarName() << "(/* ID */ "
        << QualifiedBankID << ", /* Name */ \"" << Bank.getName() << "\", "
        << "/* CoveredRegClasses */ " << Bank.getCoverageArrayName()
        << ", /* NumRegClasses */ "



More information about the llvm-commits mailing list