]> granicus.if.org Git - clang/commitdiff
[Options] Store the option ID in OptTable::Info.
authorMichael J. Spencer <bigcheesegs@gmail.com>
Tue, 25 Sep 2012 23:12:48 +0000 (23:12 +0000)
committerMichael J. Spencer <bigcheesegs@gmail.com>
Tue, 25 Sep 2012 23:12:48 +0000 (23:12 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164644 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Driver/OptTable.h
include/clang/Driver/Option.h
lib/Driver/CC1AsOptions.cpp
lib/Driver/DriverOptions.cpp
lib/Driver/OptTable.cpp
lib/Driver/Option.cpp

index 15a22fed20a552ed66e04e29c53181a6781e3c00..ea7e57b12be107ab0fab21f1bfc45cb906299042 100644 (file)
@@ -34,6 +34,7 @@ namespace driver {
       const char *Name;
       const char *HelpText;
       const char *MetaVar;
+      unsigned ID;
       unsigned char Kind;
       unsigned char Param;
       unsigned short Flags;
index a149f5b0c40821e9b04f24ab85f7f3a2eabf5823..2adba6b4b7874ca8a6e573d453262ed6676c1908 100644 (file)
@@ -71,9 +71,6 @@ namespace options {
   private:
     const OptTable::Info *Info;
 
-    /// The option ID.
-    OptSpecifier ID;
-
     /// Group this option is a member of, if any.
     const Option *Group;
 
@@ -81,11 +78,11 @@ namespace options {
     const Option *Alias;
 
   public:
-    Option(const OptTable::Info *Info, OptSpecifier ID,
+    Option(const OptTable::Info *Info,
            const Option *Group, const Option *Alias);
     ~Option();
 
-    unsigned getID() const { return ID.getID(); }
+    unsigned getID() const { return Info->ID; }
     OptionClass getKind() const { return OptionClass(Info->Kind); }
     StringRef getName() const { return Info->Name; }
     const Option *getGroup() const { return Group; }
index ea80f5a20eae04bdda48dd9782b4d457432d3b97..cc7c7a4fef1f7533bce677f4133c0ed644b1b019 100644 (file)
@@ -18,7 +18,7 @@ using namespace clang::driver::cc1asoptions;
 static const OptTable::Info CC1AsInfoTable[] = {
 #define OPTION(NAME, ID, KIND, GROUP, ALIAS, FLAGS, PARAM, \
                HELPTEXT, METAVAR)   \
-  { NAME, HELPTEXT, METAVAR, Option::KIND##Class, PARAM, FLAGS, \
+  { NAME, HELPTEXT, METAVAR, OPT_##ID, Option::KIND##Class, PARAM, FLAGS, \
     OPT_##GROUP, OPT_##ALIAS },
 #include "clang/Driver/CC1AsOptions.inc"
 };
index 715819d04b26dabf5a39188ec8cf8788d02f768c..f9d36cfb5e6ee4173c490a3b5dd4b41997f9d5f0 100644 (file)
@@ -17,7 +17,7 @@ using namespace clang::driver::options;
 static const OptTable::Info InfoTable[] = {
 #define OPTION(NAME, ID, KIND, GROUP, ALIAS, FLAGS, PARAM, \
                HELPTEXT, METAVAR)   \
-  { NAME, HELPTEXT, METAVAR, Option::KIND##Class, PARAM, FLAGS, \
+  { NAME, HELPTEXT, METAVAR, OPT_##ID, Option::KIND##Class, PARAM, FLAGS, \
     OPT_##GROUP, OPT_##ALIAS },
 #include "clang/Driver/Options.inc"
 };
index 3ebc6d8725860b2038abd1d181f60b10f70d90dc..a6d3cb314990a8120dc07fa151db5e3e755e70cf 100644 (file)
@@ -138,7 +138,7 @@ Option *OptTable::CreateOption(unsigned id) const {
   const Option *Group = getOption(info.GroupID);
   const Option *Alias = getOption(info.AliasID);
 
-  Option *Opt = new Option(&info, id, Group, Alias);
+  Option *Opt = new Option(&info, Group, Alias);
 
   return Opt;
 }
index 57eaee22136c55e3e8f70032e6ceeaa5014446dc..3be141e61da056f72772a7dbaa1322cafdc33ab7 100644 (file)
@@ -17,9 +17,9 @@
 #include <algorithm>
 using namespace clang::driver;
 
-Option::Option(const OptTable::Info *info, OptSpecifier _ID,
+Option::Option(const OptTable::Info *info,
                const Option *_Group, const Option *_Alias)
-  : Info(info), ID(_ID.getID()), Group(_Group), Alias(_Alias) {
+  : Info(info), Group(_Group), Alias(_Alias) {
 
   // Multi-level aliases are not supported, and alias options cannot
   // have groups. This just simplifies option tracking, it is not an
@@ -72,7 +72,7 @@ bool Option::matches(OptSpecifier Opt) const {
     return Alias->matches(Opt);
 
   // Check exact match.
-  if (ID == Opt)
+  if (getID() == Opt.getID())
     return true;
 
   if (Group)