[llvm] 685e2b1 - [TableGen] Avoid deprecated-enum-enum-conversion C++20 warnings; NFC (#218909)

via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 23 00:32:12 PDT 2026


Author: Sven van Haastregt
Date: 2026-09-23T09:32:06+02:00
New Revision: 685e2b1b1231db578da789fb896543ddb311e293

URL: https://github.com/llvm/llvm-project/commit/685e2b1b1231db578da789fb896543ddb311e293
DIFF: https://github.com/llvm/llvm-project/commit/685e2b1b1231db578da789fb896543ddb311e293.diff

LOG: [TableGen] Avoid deprecated-enum-enum-conversion C++20 warnings; NFC (#218909)

The bitwise OR of different enum types resulted in many C++20
deprecation warnings in the generated option tables:

     warning: bitwise operation between different enumeration types
     ‘llvm::opt::DriverVisibility’ and
     ‘clang::options::ClangVisibility’ is deprecated
     [-Wdeprecated-enum-enum-conversion]

Fix by emitting casts to `unsigned`, matching the types of the
corresponding fields in `OptTable::Info`.

Added: 
    

Modified: 
    llvm/utils/TableGen/OptionParserEmitter.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/utils/TableGen/OptionParserEmitter.cpp b/llvm/utils/TableGen/OptionParserEmitter.cpp
index dd13c927b2e02..2360d55267625 100644
--- a/llvm/utils/TableGen/OptionParserEmitter.cpp
+++ b/llvm/utils/TableGen/OptionParserEmitter.cpp
@@ -301,10 +301,12 @@ static void emitOptionParser(const RecordKeeper &Records, raw_ostream &OS) {
     raw_string_ostream MaskOS(Mask);
     ListSeparator Sep(" | ");
     for (const Init *I : *R.getValueAsListInit(Field))
-      MaskOS << Sep << cast<DefInit>(I)->getDef()->getName();
+      MaskOS << Sep << "static_cast<unsigned>("
+             << cast<DefInit>(I)->getDef()->getName() << ")";
     if (const DefInit *DI = dyn_cast<DefInit>(R.getValueInit("Group")))
       for (const Init *I : *DI->getDef()->getValueAsListInit(Field))
-        MaskOS << Sep << cast<DefInit>(I)->getDef()->getName();
+        MaskOS << Sep << "static_cast<unsigned>("
+               << cast<DefInit>(I)->getDef()->getName() << ")";
     return Mask.empty() ? std::string("0") : Mask;
   };
 


        


More information about the llvm-commits mailing list