jansvoboda11 created this revision.
jansvoboda11 added a reviewer: MaskRay.
Herald added subscribers: ormris, ributzka, kadircet, arphaman, hiraditya.
Herald added a reviewer: alexander-shaposhnikov.
Herald added a reviewer: jhenderson.
Herald added a project: All.
jansvoboda11 requested review of this revision.
Herald added projects: clang, LLVM, clang-tools-extra.
Herald added subscribers: cfe-commits, llvm-commits.

Some Clang command-line handling code could benefit from the option spelling 
being a `StringLiteral`. This patch changes the `llvm::opt` TableGen backend to 
generate the "canonical" spelling and emit it into the .inc file.

Depends on D157028 <https://reviews.llvm.org/D157028>.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D157029

Files:
  clang-tools-extra/clangd/CompileCommands.cpp
  clang/lib/Frontend/CompilerInvocation.cpp
  llvm/include/llvm/Option/OptTable.h
  llvm/include/llvm/Option/Option.h
  llvm/lib/ExecutionEngine/JITLink/COFFDirectiveParser.cpp
  llvm/lib/ExecutionEngine/JITLink/COFFDirectiveParser.h
  llvm/tools/llvm-lipo/llvm-lipo.cpp
  llvm/tools/llvm-objcopy/ObjcopyOptions.cpp
  llvm/tools/llvm-objdump/ObjdumpOptID.h
  llvm/tools/llvm-objdump/llvm-objdump.cpp
  llvm/tools/llvm-rc/llvm-rc.cpp
  llvm/utils/TableGen/OptParserEmitter.cpp

Index: llvm/utils/TableGen/OptParserEmitter.cpp
===================================================================
--- llvm/utils/TableGen/OptParserEmitter.cpp
+++ llvm/utils/TableGen/OptParserEmitter.cpp
@@ -105,8 +105,6 @@
   }
 
   void emit(raw_ostream &OS) const {
-    write_cstring(OS, StringRef(getOptionSpelling(R)));
-    OS << ", ";
     OS << ShouldParse;
     OS << ", ";
     OS << ShouldAlwaysEmit;
@@ -306,6 +304,9 @@
     // The option string.
     OS << ", \"" << R.getValueAsString("Name") << '"';
 
+    // The option spelling.
+    OS << ", \"" << R.getValueAsString("Name") << '"';
+
     // The option identifier name.
     OS << ", " << getOptionName(R);
 
@@ -349,6 +350,11 @@
     // The option string.
     emitNameUsingSpelling(OS, R);
 
+    // The option spelling.
+    OS << ", llvm::StringLiteral(";
+    write_cstring(OS, getOptionSpelling(R));
+    OS << ")";
+
     // The option identifier name.
     OS << ", " << getOptionName(R);
 
Index: llvm/tools/llvm-rc/llvm-rc.cpp
===================================================================
--- llvm/tools/llvm-rc/llvm-rc.cpp
+++ llvm/tools/llvm-rc/llvm-rc.cpp
@@ -77,8 +77,8 @@
 
 enum Windres_ID {
   WINDRES_INVALID = 0, // This is not a correct option ID.
-#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM,  \
-               HELPTEXT, METAVAR, VALUES)                                      \
+#define OPTION(PREFIX, NAME, SPELLING, ID, KIND, GROUP, ALIAS, ALIASARGS,      \
+               FLAGS, PARAM, HELPTEXT, METAVAR, VALUES)                        \
   WINDRES_##ID,
 #include "WindresOpts.inc"
 #undef OPTION
@@ -93,12 +93,21 @@
 #undef PREFIX
 
 static constexpr opt::OptTable::Info InfoTable[] = {
-#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM,  \
-               HELPTEXT, METAVAR, VALUES)                                      \
-  {PREFIX,          NAME,         HELPTEXT,                                    \
-   METAVAR,         WINDRES_##ID, opt::Option::KIND##Class,                    \
-   PARAM,           FLAGS,        WINDRES_##GROUP,                             \
-   WINDRES_##ALIAS, ALIASARGS,    VALUES},
+#define OPTION(PREFIX, NAME, SPELLING, ID, KIND, GROUP, ALIAS, ALIASARGS,      \
+               FLAGS, PARAM, HELPTEXT, METAVAR, VALUES)                        \
+  {PREFIX,                                                                     \
+   NAME,                                                                       \
+   SPELLING,                                                                   \
+   HELPTEXT,                                                                   \
+   METAVAR,                                                                    \
+   WINDRES_##ID,                                                               \
+   opt::Option::KIND##Class,                                                   \
+   PARAM,                                                                      \
+   FLAGS,                                                                      \
+   WINDRES_##GROUP,                                                            \
+   WINDRES_##ALIAS,                                                            \
+   ALIASARGS,                                                                  \
+   VALUES},
 #include "WindresOpts.inc"
 #undef OPTION
 };
Index: llvm/tools/llvm-objdump/llvm-objdump.cpp
===================================================================
--- llvm/tools/llvm-objdump/llvm-objdump.cpp
+++ llvm/tools/llvm-objdump/llvm-objdump.cpp
@@ -128,12 +128,21 @@
 #undef PREFIX
 
 static constexpr opt::OptTable::Info ObjdumpInfoTable[] = {
-#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM,  \
-               HELPTEXT, METAVAR, VALUES)                                      \
-  {PREFIX,          NAME,         HELPTEXT,                                    \
-   METAVAR,         OBJDUMP_##ID, opt::Option::KIND##Class,                    \
-   PARAM,           FLAGS,        OBJDUMP_##GROUP,                             \
-   OBJDUMP_##ALIAS, ALIASARGS,    VALUES},
+#define OPTION(PREFIX, NAME, SPELLING, ID, KIND, GROUP, ALIAS, ALIASARGS,      \
+               FLAGS, PARAM, HELPTEXT, METAVAR, VALUES)                        \
+  {PREFIX,                                                                     \
+   NAME,                                                                       \
+   SPELLING,                                                                   \
+   HELPTEXT,                                                                   \
+   METAVAR,                                                                    \
+   OBJDUMP_##ID,                                                               \
+   opt::Option::KIND##Class,                                                   \
+   PARAM,                                                                      \
+   FLAGS,                                                                      \
+   OBJDUMP_##GROUP,                                                            \
+   OBJDUMP_##ALIAS,                                                            \
+   ALIASARGS,                                                                  \
+   VALUES},
 #include "ObjdumpOpts.inc"
 #undef OPTION
 };
@@ -149,8 +158,8 @@
 
 enum OtoolOptID {
   OTOOL_INVALID = 0, // This is not an option ID.
-#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM,  \
-               HELPTEXT, METAVAR, VALUES)                                      \
+#define OPTION(PREFIX, NAME, SPELLING, ID, KIND, GROUP, ALIAS, ALIASARGS,      \
+               FLAGS, PARAM, HELPTEXT, METAVAR, VALUES)                        \
   OTOOL_##ID,
 #include "OtoolOpts.inc"
 #undef OPTION
@@ -165,12 +174,21 @@
 #undef PREFIX
 
 static constexpr opt::OptTable::Info OtoolInfoTable[] = {
-#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM,  \
-               HELPTEXT, METAVAR, VALUES)                                      \
-  {PREFIX,        NAME,       HELPTEXT,                                        \
-   METAVAR,       OTOOL_##ID, opt::Option::KIND##Class,                        \
-   PARAM,         FLAGS,      OTOOL_##GROUP,                                   \
-   OTOOL_##ALIAS, ALIASARGS,  VALUES},
+#define OPTION(PREFIX, NAME, SPELLING, ID, KIND, GROUP, ALIAS, ALIASARGS,      \
+               FLAGS, PARAM, HELPTEXT, METAVAR, VALUES)                        \
+  {PREFIX,                                                                     \
+   NAME,                                                                       \
+   SPELLING,                                                                   \
+   HELPTEXT,                                                                   \
+   METAVAR,                                                                    \
+   OTOOL_##ID,                                                                 \
+   opt::Option::KIND##Class,                                                   \
+   PARAM,                                                                      \
+   FLAGS,                                                                      \
+   OTOOL_##GROUP,                                                              \
+   OTOOL_##ALIAS,                                                              \
+   ALIASARGS,                                                                  \
+   VALUES},
 #include "OtoolOpts.inc"
 #undef OPTION
 };
Index: llvm/tools/llvm-objdump/ObjdumpOptID.h
===================================================================
--- llvm/tools/llvm-objdump/ObjdumpOptID.h
+++ llvm/tools/llvm-objdump/ObjdumpOptID.h
@@ -3,8 +3,8 @@
 
 enum ObjdumpOptID {
   OBJDUMP_INVALID = 0, // This is not an option ID.
-#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM,  \
-               HELPTEXT, METAVAR, VALUES)                                      \
+#define OPTION(PREFIX, NAME, SPELLING, ID, KIND, GROUP, ALIAS, ALIASARGS,      \
+               FLAGS, PARAM, HELPTEXT, METAVAR, VALUES)                        \
   OBJDUMP_##ID,
 #include "ObjdumpOpts.inc"
 #undef OPTION
Index: llvm/tools/llvm-objcopy/ObjcopyOptions.cpp
===================================================================
--- llvm/tools/llvm-objcopy/ObjcopyOptions.cpp
+++ llvm/tools/llvm-objcopy/ObjcopyOptions.cpp
@@ -30,8 +30,8 @@
 namespace {
 enum ObjcopyID {
   OBJCOPY_INVALID = 0, // This is not an option ID.
-#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM,  \
-               HELPTEXT, METAVAR, VALUES)                                      \
+#define OPTION(PREFIX, NAME, SPELLING, ID, KIND, GROUP, ALIAS, ALIASARGS,      \
+               FLAGS, PARAM, HELPTEXT, METAVAR, VALUES)                        \
   OBJCOPY_##ID,
 #include "ObjcopyOpts.inc"
 #undef OPTION
@@ -46,12 +46,21 @@
 #undef PREFIX
 
 static constexpr opt::OptTable::Info ObjcopyInfoTable[] = {
-#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM,  \
-               HELPTEXT, METAVAR, VALUES)                                      \
-  {PREFIX,          NAME,         HELPTEXT,                                    \
-   METAVAR,         OBJCOPY_##ID, opt::Option::KIND##Class,                    \
-   PARAM,           FLAGS,        OBJCOPY_##GROUP,                             \
-   OBJCOPY_##ALIAS, ALIASARGS,    VALUES},
+#define OPTION(PREFIX, NAME, SPELLING, ID, KIND, GROUP, ALIAS, ALIASARGS,      \
+               FLAGS, PARAM, HELPTEXT, METAVAR, VALUES)                        \
+  {PREFIX,                                                                     \
+   NAME,                                                                       \
+   SPELLING,                                                                   \
+   HELPTEXT,                                                                   \
+   METAVAR,                                                                    \
+   OBJCOPY_##ID,                                                               \
+   opt::Option::KIND##Class,                                                   \
+   PARAM,                                                                      \
+   FLAGS,                                                                      \
+   OBJCOPY_##GROUP,                                                            \
+   OBJCOPY_##ALIAS,                                                            \
+   ALIASARGS,                                                                  \
+   VALUES},
 #include "ObjcopyOpts.inc"
 #undef OPTION
 };
@@ -66,8 +75,8 @@
 
 enum InstallNameToolID {
   INSTALL_NAME_TOOL_INVALID = 0, // This is not an option ID.
-#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM,  \
-               HELPTEXT, METAVAR, VALUES)                                      \
+#define OPTION(PREFIX, NAME, SPELLING, ID, KIND, GROUP, ALIAS, ALIASARGS,      \
+               FLAGS, PARAM, HELPTEXT, METAVAR, VALUES)                        \
   INSTALL_NAME_TOOL_##ID,
 #include "InstallNameToolOpts.inc"
 #undef OPTION
@@ -83,10 +92,11 @@
 #undef PREFIX
 
 static constexpr opt::OptTable::Info InstallNameToolInfoTable[] = {
-#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM,  \
-               HELPTEXT, METAVAR, VALUES)                                      \
+#define OPTION(PREFIX, NAME, SPELLING, ID, KIND, GROUP, ALIAS, ALIASARGS,      \
+               FLAGS, PARAM, HELPTEXT, METAVAR, VALUES)                        \
   {PREFIX,                                                                     \
    NAME,                                                                       \
+   SPELLING,                                                                   \
    HELPTEXT,                                                                   \
    METAVAR,                                                                    \
    INSTALL_NAME_TOOL_##ID,                                                     \
@@ -110,8 +120,8 @@
 
 enum BitcodeStripID {
   BITCODE_STRIP_INVALID = 0, // This is not an option ID.
-#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM,  \
-               HELPTEXT, METAVAR, VALUES)                                      \
+#define OPTION(PREFIX, NAME, SPELLING, ID, KIND, GROUP, ALIAS, ALIASARGS,      \
+               FLAGS, PARAM, HELPTEXT, METAVAR, VALUES)                        \
   BITCODE_STRIP_##ID,
 #include "BitcodeStripOpts.inc"
 #undef OPTION
@@ -127,10 +137,11 @@
 #undef PREFIX
 
 static constexpr opt::OptTable::Info BitcodeStripInfoTable[] = {
-#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM,  \
-               HELPTEXT, METAVAR, VALUES)                                      \
+#define OPTION(PREFIX, NAME, SPELLING, ID, KIND, GROUP, ALIAS, ALIASARGS,      \
+               FLAGS, PARAM, HELPTEXT, METAVAR, VALUES)                        \
   {PREFIX,                                                                     \
    NAME,                                                                       \
+   SPELLING,                                                                   \
    HELPTEXT,                                                                   \
    METAVAR,                                                                    \
    BITCODE_STRIP_##ID,                                                         \
@@ -154,8 +165,8 @@
 
 enum StripID {
   STRIP_INVALID = 0, // This is not an option ID.
-#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM,  \
-               HELPTEXT, METAVAR, VALUES)                                      \
+#define OPTION(PREFIX, NAME, SPELLING, ID, KIND, GROUP, ALIAS, ALIASARGS,      \
+               FLAGS, PARAM, HELPTEXT, METAVAR, VALUES)                        \
   STRIP_##ID,
 #include "StripOpts.inc"
 #undef OPTION
@@ -170,12 +181,21 @@
 #undef PREFIX
 
 static constexpr opt::OptTable::Info StripInfoTable[] = {
-#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM,  \
-               HELPTEXT, METAVAR, VALUES)                                      \
-  {PREFIX,        NAME,       HELPTEXT,                                        \
-   METAVAR,       STRIP_##ID, opt::Option::KIND##Class,                        \
-   PARAM,         FLAGS,      STRIP_##GROUP,                                   \
-   STRIP_##ALIAS, ALIASARGS,  VALUES},
+#define OPTION(PREFIX, NAME, SPELLING, ID, KIND, GROUP, ALIAS, ALIASARGS,      \
+               FLAGS, PARAM, HELPTEXT, METAVAR, VALUES)                        \
+  {PREFIX,                                                                     \
+   NAME,                                                                       \
+   SPELLING,                                                                   \
+   HELPTEXT,                                                                   \
+   METAVAR,                                                                    \
+   STRIP_##ID,                                                                 \
+   opt::Option::KIND##Class,                                                   \
+   PARAM,                                                                      \
+   FLAGS,                                                                      \
+   STRIP_##GROUP,                                                              \
+   STRIP_##ALIAS,                                                              \
+   ALIASARGS,                                                                  \
+   VALUES},
 #include "StripOpts.inc"
 #undef OPTION
 };
Index: llvm/tools/llvm-lipo/llvm-lipo.cpp
===================================================================
--- llvm/tools/llvm-lipo/llvm-lipo.cpp
+++ llvm/tools/llvm-lipo/llvm-lipo.cpp
@@ -67,8 +67,8 @@
 namespace {
 enum LipoID {
   LIPO_INVALID = 0, // This is not an option ID.
-#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM,  \
-               HELPTEXT, METAVAR, VALUES)                                      \
+#define OPTION(PREFIX, NAME, SPELLING, ID, KIND, GROUP, ALIAS, ALIASARGS,      \
+               FLAGS, PARAM, HELPTEXT, METAVAR, VALUES)                        \
   LIPO_##ID,
 #include "LipoOpts.inc"
 #undef OPTION
@@ -83,12 +83,21 @@
 #undef PREFIX
 
 static constexpr opt::OptTable::Info LipoInfoTable[] = {
-#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM,  \
-               HELPTEXT, METAVAR, VALUES)                                      \
-  {PREFIX,       NAME,      HELPTEXT,                                          \
-   METAVAR,      LIPO_##ID, opt::Option::KIND##Class,                          \
-   PARAM,        FLAGS,     LIPO_##GROUP,                                      \
-   LIPO_##ALIAS, ALIASARGS, VALUES},
+#define OPTION(PREFIX, NAME, SPELLING, ID, KIND, GROUP, ALIAS, ALIASARGS,      \
+               FLAGS, PARAM, HELPTEXT, METAVAR, VALUES)                        \
+  {PREFIX,                                                                     \
+   NAME,                                                                       \
+   SPELLING,                                                                   \
+   HELPTEXT,                                                                   \
+   METAVAR,                                                                    \
+   LIPO_##ID,                                                                  \
+   opt::Option::KIND##Class,                                                   \
+   PARAM,                                                                      \
+   FLAGS,                                                                      \
+   LIPO_##GROUP,                                                               \
+   LIPO_##ALIAS,                                                               \
+   ALIASARGS,                                                                  \
+   VALUES},
 #include "LipoOpts.inc"
 #undef OPTION
 };
Index: llvm/lib/ExecutionEngine/JITLink/COFFDirectiveParser.h
===================================================================
--- llvm/lib/ExecutionEngine/JITLink/COFFDirectiveParser.h
+++ llvm/lib/ExecutionEngine/JITLink/COFFDirectiveParser.h
@@ -26,7 +26,8 @@
 
 enum {
   COFF_OPT_INVALID = 0,
-#define OPTION(_1, _2, ID, _4, _5, _6, _7, _8, _9, _10, _11, _12) COFF_OPT_##ID,
+#define OPTION(_1, _2, _3, ID, _5, _6, _7, _8, _9, _10, _11, _12, _13)         \
+  COFF_OPT_##ID,
 #include "COFFOptions.inc"
 #undef OPTION
 };
Index: llvm/lib/ExecutionEngine/JITLink/COFFDirectiveParser.cpp
===================================================================
--- llvm/lib/ExecutionEngine/JITLink/COFFDirectiveParser.cpp
+++ llvm/lib/ExecutionEngine/JITLink/COFFDirectiveParser.cpp
@@ -37,19 +37,20 @@
 
 // Create table mapping all options defined in COFFOptions.td
 static constexpr opt::OptTable::Info infoTable[] = {
-#define OPTION(X1, X2, ID, KIND, GROUP, ALIAS, X7, X8, X9, X10, X11, X12)      \
+#define OPTION(X1, X2, X3, ID, KIND, GROUP, ALIAS, X8, X9, X10, X11, X12, X13) \
   {X1,                                                                         \
    X2,                                                                         \
-   X10,                                                                        \
+   X3,                                                                         \
    X11,                                                                        \
+   X12,                                                                        \
    COFF_OPT_##ID,                                                              \
    opt::Option::KIND##Class,                                                   \
+   X10,                                                                        \
    X9,                                                                         \
-   X8,                                                                         \
    COFF_OPT_##GROUP,                                                           \
    COFF_OPT_##ALIAS,                                                           \
-   X7,                                                                         \
-   X12},
+   X8,                                                                         \
+   X13},
 #include "COFFOptions.inc"
 #undef OPTION
 };
Index: llvm/include/llvm/Option/Option.h
===================================================================
--- llvm/include/llvm/Option/Option.h
+++ llvm/include/llvm/Option/Option.h
@@ -100,6 +100,11 @@
     return Info->Name;
   }
 
+  StringLiteral getSpelling() const {
+    assert(Info && "Must have a valid info!");
+    return Info->Spelling;
+  }
+
   const Option getGroup() const {
     assert(Info && "Must have a valid info!");
     assert(Owner && "Must have a valid owner!");
Index: llvm/include/llvm/Option/OptTable.h
===================================================================
--- llvm/include/llvm/Option/OptTable.h
+++ llvm/include/llvm/Option/OptTable.h
@@ -45,6 +45,7 @@
     /// matching.
     ArrayRef<StringLiteral> Prefixes;
     StringRef Name;
+    StringLiteral Spelling;
     const char *HelpText;
     const char *MetaVar;
     unsigned ID;
Index: clang/lib/Frontend/CompilerInvocation.cpp
===================================================================
--- clang/lib/Frontend/CompilerInvocation.cpp
+++ clang/lib/Frontend/CompilerInvocation.cpp
@@ -427,10 +427,10 @@
 }
 
 #define PARSE_OPTION_WITH_MARSHALLING(                                         \
-    ARGS, DIAGS, PREFIX_TYPE, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS,  \
-    PARAM, HELPTEXT, METAVAR, VALUES, SPELLING, SHOULD_PARSE, ALWAYS_EMIT,     \
-    KEYPATH, DEFAULT_VALUE, IMPLIED_CHECK, IMPLIED_VALUE, NORMALIZER,          \
-    DENORMALIZER, MERGER, EXTRACTOR, TABLE_INDEX)                              \
+    ARGS, DIAGS, PREFIX_TYPE, NAME, SPELLING, ID, KIND, GROUP, ALIAS,          \
+    ALIASARGS, FLAGS, PARAM, HELPTEXT, METAVAR, VALUES, SHOULD_PARSE,          \
+    ALWAYS_EMIT, KEYPATH, DEFAULT_VALUE, IMPLIED_CHECK, IMPLIED_VALUE,         \
+    NORMALIZER, DENORMALIZER, MERGER, EXTRACTOR, TABLE_INDEX)                  \
   if ((FLAGS)&options::CC1Option) {                                            \
     KEYPATH = MERGER(KEYPATH, DEFAULT_VALUE);                                  \
     if (IMPLIED_CHECK)                                                         \
@@ -444,10 +444,10 @@
 // Capture the extracted value as a lambda argument to avoid potential issues
 // with lifetime extension of the reference.
 #define GENERATE_OPTION_WITH_MARSHALLING(                                      \
-    ARGS, STRING_ALLOCATOR, PREFIX_TYPE, NAME, ID, KIND, GROUP, ALIAS,         \
-    ALIASARGS, FLAGS, PARAM, HELPTEXT, METAVAR, VALUES, SPELLING,              \
-    SHOULD_PARSE, ALWAYS_EMIT, KEYPATH, DEFAULT_VALUE, IMPLIED_CHECK,          \
-    IMPLIED_VALUE, NORMALIZER, DENORMALIZER, MERGER, EXTRACTOR, TABLE_INDEX)   \
+    ARGS, STRING_ALLOCATOR, PREFIX_TYPE, NAME, SPELLING, ID, KIND, GROUP,      \
+    ALIAS, ALIASARGS, FLAGS, PARAM, HELPTEXT, METAVAR, VALUES, SHOULD_PARSE,   \
+    ALWAYS_EMIT, KEYPATH, DEFAULT_VALUE, IMPLIED_CHECK, IMPLIED_VALUE,         \
+    NORMALIZER, DENORMALIZER, MERGER, EXTRACTOR, TABLE_INDEX)                  \
   if ((FLAGS)&options::CC1Option) {                                            \
     [&](const auto &Extracted) {                                               \
       if (ALWAYS_EMIT ||                                                       \
Index: clang-tools-extra/clangd/CompileCommands.cpp
===================================================================
--- clang-tools-extra/clangd/CompileCommands.cpp
+++ clang-tools-extra/clangd/CompileCommands.cpp
@@ -493,8 +493,8 @@
   static constexpr llvm::StringLiteral NAME##_init[] = VALUE;                  \
   static constexpr llvm::ArrayRef<llvm::StringLiteral> NAME(                   \
       NAME##_init, std::size(NAME##_init) - 1);
-#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM,  \
-               HELP, METAVAR, VALUES)                                          \
+#define OPTION(PREFIX, NAME, SPELLING, ID, KIND, GROUP, ALIAS, ALIASARGS,      \
+               FLAGS, PARAM, HELP, METAVAR, VALUES)                            \
   Prefixes[DriverID::OPT_##ID] = PREFIX;
 #include "clang/Driver/Options.inc"
 #undef OPTION
@@ -505,8 +505,8 @@
       DriverID AliasID;
       const void *AliasArgs;
     } AliasTable[] = {
-#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM,  \
-               HELP, METAVAR, VALUES)                                          \
+#define OPTION(PREFIX, NAME, SPELLING, ID, KIND, GROUP, ALIAS, ALIASARGS,      \
+               FLAGS, PARAM, HELP, METAVAR, VALUES)                            \
   {DriverID::OPT_##ID, DriverID::OPT_##ALIAS, ALIASARGS},
 #include "clang/Driver/Options.inc"
 #undef OPTION
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to