From: Michael J. Spencer Date: Tue, 25 Sep 2012 23:12:48 +0000 (+0000) Subject: [Options] Store the option ID in OptTable::Info. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=663117ab56390a18f4157ca84c9a92e5c6cad054;p=clang [Options] Store the option ID in OptTable::Info. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164644 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Driver/OptTable.h b/include/clang/Driver/OptTable.h index 15a22fed20..ea7e57b12b 100644 --- a/include/clang/Driver/OptTable.h +++ b/include/clang/Driver/OptTable.h @@ -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; diff --git a/include/clang/Driver/Option.h b/include/clang/Driver/Option.h index a149f5b0c4..2adba6b4b7 100644 --- a/include/clang/Driver/Option.h +++ b/include/clang/Driver/Option.h @@ -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; } diff --git a/lib/Driver/CC1AsOptions.cpp b/lib/Driver/CC1AsOptions.cpp index ea80f5a20e..cc7c7a4fef 100644 --- a/lib/Driver/CC1AsOptions.cpp +++ b/lib/Driver/CC1AsOptions.cpp @@ -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" }; diff --git a/lib/Driver/DriverOptions.cpp b/lib/Driver/DriverOptions.cpp index 715819d04b..f9d36cfb5e 100644 --- a/lib/Driver/DriverOptions.cpp +++ b/lib/Driver/DriverOptions.cpp @@ -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" }; diff --git a/lib/Driver/OptTable.cpp b/lib/Driver/OptTable.cpp index 3ebc6d8725..a6d3cb3149 100644 --- a/lib/Driver/OptTable.cpp +++ b/lib/Driver/OptTable.cpp @@ -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; } diff --git a/lib/Driver/Option.cpp b/lib/Driver/Option.cpp index 57eaee2213..3be141e61d 100644 --- a/lib/Driver/Option.cpp +++ b/lib/Driver/Option.cpp @@ -17,9 +17,9 @@ #include 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)