<div dir="ltr">LGTM. We should probably eliminate this code duplication from LLD.</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Jul 31, 2013 at 4:17 PM, Hans Wennborg <span dir="ltr"><<a href="mailto:hans@hanshq.net" target="_blank">hans@hanshq.net</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: hans<br>
Date: Wed Jul 31 18:17:41 2013<br>
New Revision: 187541<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=187541&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=187541&view=rev</a><br>
Log:<br>
Option parsing tables: pick up AliasArgs from the OPTION macro.<br>
<br>
This depends on LLVM r187537.<br>
<br>
The SUPPORT_ALIASARGS macro will be removed once all option parsing<br>
clients have been updated.<br>
<br>
Modified:<br>
    lld/trunk/lib/Driver/CoreDriver.cpp<br>
    lld/trunk/lib/Driver/DarwinLdDriver.cpp<br>
    lld/trunk/lib/Driver/GnuLdDriver.cpp<br>
    lld/trunk/lib/Driver/WinLinkDriver.cpp<br>
<br>
Modified: lld/trunk/lib/Driver/CoreDriver.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Driver/CoreDriver.cpp?rev=187541&r1=187540&r2=187541&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Driver/CoreDriver.cpp?rev=187541&r1=187540&r2=187541&view=diff</a><br>


==============================================================================<br>
--- lld/trunk/lib/Driver/CoreDriver.cpp (original)<br>
+++ lld/trunk/lib/Driver/CoreDriver.cpp Wed Jul 31 18:17:41 2013<br>
@@ -29,10 +29,13 @@ using namespace lld;<br>
<br>
 namespace {<br>
<br>
+#define SUPPORT_ALIASARGS // FIXME: Remove when no longer necessary.<br>
+<br>
 // Create enum with OPT_xxx values for each option in DarwinOptions.td<br>
 enum CoreOpt {<br>
   OPT_INVALID = 0,<br>
-#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, FLAGS, PARAM, HELP, META) \<br>
+#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \<br>
+               HELP, META) \<br>
           OPT_##ID,<br>
 #include "CoreOptions.inc"<br>
   LastOption<br>
@@ -46,10 +49,10 @@ enum CoreOpt {<br>
<br>
 // Create table mapping all options defined in CoreOptions.td<br>
 static const llvm::opt::OptTable::Info infoTable[] = {<br>
-#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, FLAGS, PARAM, \<br>
+#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \<br>
                HELPTEXT, METAVAR)   \<br>
   { PREFIX, NAME, HELPTEXT, METAVAR, OPT_##ID, llvm::opt::Option::KIND##Class, \<br>
-    PARAM, FLAGS, OPT_##GROUP, OPT_##ALIAS },<br>
+    PARAM, FLAGS, OPT_##GROUP, OPT_##ALIAS, ALIASARGS },<br>
 #include "CoreOptions.inc"<br>
 #undef OPTION<br>
 };<br>
<br>
Modified: lld/trunk/lib/Driver/DarwinLdDriver.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Driver/DarwinLdDriver.cpp?rev=187541&r1=187540&r2=187541&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Driver/DarwinLdDriver.cpp?rev=187541&r1=187540&r2=187541&view=diff</a><br>


==============================================================================<br>
--- lld/trunk/lib/Driver/DarwinLdDriver.cpp (original)<br>
+++ lld/trunk/lib/Driver/DarwinLdDriver.cpp Wed Jul 31 18:17:41 2013<br>
@@ -34,10 +34,13 @@<br>
<br>
 namespace {<br>
<br>
+#define SUPPORT_ALIASARGS // FIXME: Remove when no longer necessary.<br>
+<br>
 // Create enum with OPT_xxx values for each option in DarwinOptions.td<br>
 enum DarwinOpt {<br>
   OPT_INVALID = 0,<br>
-#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, FLAGS, PARAM, HELP, META) \<br>
+#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \<br>
+               HELP, META) \<br>
           OPT_##ID,<br>
 #include "DarwinOptions.inc"<br>
   LastOption<br>
@@ -51,10 +54,10 @@ enum DarwinOpt {<br>
<br>
 // Create table mapping all options defined in DarwinOptions.td<br>
 static const llvm::opt::OptTable::Info infoTable[] = {<br>
-#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, FLAGS, PARAM, \<br>
+#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \<br>
                HELPTEXT, METAVAR)   \<br>
   { PREFIX, NAME, HELPTEXT, METAVAR, OPT_##ID, llvm::opt::Option::KIND##Class, \<br>
-    PARAM, FLAGS, OPT_##GROUP, OPT_##ALIAS },<br>
+    PARAM, FLAGS, OPT_##GROUP, OPT_##ALIAS, ALIASARGS },<br>
 #include "DarwinOptions.inc"<br>
 #undef OPTION<br>
 };<br>
<br>
Modified: lld/trunk/lib/Driver/GnuLdDriver.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Driver/GnuLdDriver.cpp?rev=187541&r1=187540&r2=187541&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Driver/GnuLdDriver.cpp?rev=187541&r1=187540&r2=187541&view=diff</a><br>


==============================================================================<br>
--- lld/trunk/lib/Driver/GnuLdDriver.cpp (original)<br>
+++ lld/trunk/lib/Driver/GnuLdDriver.cpp Wed Jul 31 18:17:41 2013<br>
@@ -36,10 +36,13 @@ using namespace lld;<br>
<br>
 namespace {<br>
<br>
+#define SUPPORT_ALIASARGS // FIXME: Remove when no longer necessary.<br>
+<br>
 // Create enum with OPT_xxx values for each option in LDOptions.td<br>
 enum LDOpt {<br>
   OPT_INVALID = 0,<br>
-#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, FLAGS, PARAM, HELP, META) \<br>
+#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \<br>
+               HELP, META) \<br>
           OPT_##ID,<br>
 #include "LDOptions.inc"<br>
   LastOption<br>
@@ -53,10 +56,10 @@ enum LDOpt {<br>
<br>
 // Create table mapping all options defined in LDOptions.td<br>
 static const llvm::opt::OptTable::Info infoTable[] = {<br>
-#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, FLAGS, PARAM, \<br>
+#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \<br>
                HELPTEXT, METAVAR)   \<br>
   { PREFIX, NAME, HELPTEXT, METAVAR, OPT_##ID, llvm::opt::Option::KIND##Class, \<br>
-    PARAM, FLAGS, OPT_##GROUP, OPT_##ALIAS },<br>
+    PARAM, FLAGS, OPT_##GROUP, OPT_##ALIAS, ALIASARGS },<br>
 #include "LDOptions.inc"<br>
 #undef OPTION<br>
 };<br>
<br>
Modified: lld/trunk/lib/Driver/WinLinkDriver.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Driver/WinLinkDriver.cpp?rev=187541&r1=187540&r2=187541&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Driver/WinLinkDriver.cpp?rev=187541&r1=187540&r2=187541&view=diff</a><br>


==============================================================================<br>
--- lld/trunk/lib/Driver/WinLinkDriver.cpp (original)<br>
+++ lld/trunk/lib/Driver/WinLinkDriver.cpp Wed Jul 31 18:17:41 2013<br>
@@ -30,10 +30,13 @@ namespace lld {<br>
<br>
 namespace {<br>
<br>
+#define SUPPORT_ALIASARGS // FIXME: Remove when no longer necessary.<br>
+<br>
 // Create enum with OPT_xxx values for each option in WinLinkOptions.td<br>
 enum WinLinkOpt {<br>
   OPT_INVALID = 0,<br>
-#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, FLAGS, PARAM, HELP, META) \<br>
+#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \<br>
+               HELP, META) \<br>
           OPT_##ID,<br>
 #include "WinLinkOptions.inc"<br>
   LastOption<br>
@@ -47,10 +50,10 @@ enum WinLinkOpt {<br>
<br>
 // Create table mapping all options defined in WinLinkOptions.td<br>
 static const llvm::opt::OptTable::Info infoTable[] = {<br>
-#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, FLAGS, PARAM, \<br>
+#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \<br>
                HELPTEXT, METAVAR)   \<br>
   { PREFIX, NAME, HELPTEXT, METAVAR, OPT_##ID, llvm::opt::Option::KIND##Class, \<br>
-    PARAM, FLAGS, OPT_##GROUP, OPT_##ALIAS },<br>
+    PARAM, FLAGS, OPT_##GROUP, OPT_##ALIAS, ALIASARGS },<br>
 #include "WinLinkOptions.inc"<br>
 #undef OPTION<br>
 };<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>