<div dir="ltr">On 10 October 2016 at 17:07, Zachary Turner <span dir="ltr"><<a href="mailto:zturner@google.com" target="_blank">zturner@google.com</a>></span> wrote:<br><div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr">If you can post the lines of code that define your option set, maybe I can see if anything stands out as obvious.</div></blockquote><div><br></div><div>It's actually a bug it seems, I can reproduce it in llvm-pdbdump as well if I use only 2 subcommands there. A patch like this should reproduce the problem:</div><div><br></div><div><div>diff --git a/tools/llvm-pdbdump/llvm-pdbdump.cpp b/tools/llvm-pdbdump/llvm-pdbdump.cpp</div><div>index a6dd560..6ead97d 100644</div><div>--- a/tools/llvm-pdbdump/llvm-pdbdump.cpp</div><div>+++ b/tools/llvm-pdbdump/llvm-pdbdump.cpp</div><div>@@ -78,12 +78,8 @@ cl::SubCommand RawSubcommand("raw", "Dump raw structure of the PDB file");</div><div> cl::SubCommand</div><div>     PrettySubcommand("pretty",</div><div>                      "Dump semantic information about types and symbols");</div><div>-cl::SubCommand</div><div>-    YamlToPdbSubcommand("yaml2pdb",</div><div>-                        "Generate a PDB file from a YAML description");</div><div>-cl::SubCommand</div><div>-    PdbToYamlSubcommand("pdb2yaml",</div><div>-                        "Generate a detailed YAML description of a PDB File");</div><div>+cl::SubCommand &YamlToPdbSubcommand = RawSubcommand;</div><div>+cl::SubCommand &PdbToYamlSubcommand = RawSubcommand;</div><div><br></div><div> cl::OptionCategory TypeCategory("Symbol Type Options");</div><div> cl::OptionCategory FilterCategory("Filtering Options");</div></div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><br><div class="gmail_quote"><div dir="ltr">On Mon, Oct 10, 2016 at 9:03 AM Alex L <<a href="mailto:arphaman@gmail.com" target="_blank">arphaman@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr" class="gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail_extra gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">On 10 October 2016 at 16:56, Zachary Turner <span dir="ltr" class="gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><<a href="mailto:zturner@google.com" class="gmail-m_-712322968069030398m_-8492437529920739381gmail_msg" target="_blank">zturner@google.com</a>></span> wrote:<br class="gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><blockquote class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr" class="gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">So here, `Sub` refers to the active SubCommand.  For example, if you typed "llvm-pdbdump raw <options>" then `Sub` will refer to the RawSubcommand.  There are two special subcommands, `TopLevelSubcommand` and `AllSubcommands`.  The former becomes the active subcommand when you type no options at all.  For example, if you were to run `llvm-pdbdump -foo" Then the active subcommand would be `TopLevelSubcommand`.  Since subcommands cannot be nested, `TopLevelSubcommand` is the only subcommand from which it is possible for other subcommands to be "children" of.  So the first part of the conditional is saying "Only print this if the user did not explicitly specify any subcommand".  The >2 comes from the fact that `TopLevelSubcommand` and `AllSubcommands` are builtin subcommands.  Even if someone does not define any subcommands for their tool, there will still be those two.  So the second check is equivalent to saying "If the user has explicitly defined at least 1 subcommand".</div></blockquote><div class="gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><br class="gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"></div></div></div></div><div dir="ltr" class="gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail_extra gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">Thanks for the explanation, that makes sense. I stumbled across this when I was investigating why the help didn't print out subcommands when I had less than 3 sub-commands in a private tool. Given this explanation it has to be some mistake in my code or my reasoning. I'll double-check my code.</div><div class="gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><br class="gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"></div><div class="gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">Alex </div><div class="gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"> </div><blockquote class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918HOEnZb gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918h5 gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><br class="gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"></div></div></div></blockquote></div></div></div><div dir="ltr" class="gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail_extra gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><blockquote class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918HOEnZb gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918h5 gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div dir="ltr" class="gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">On Mon, Oct 10, 2016 at 3:44 AM Alex L <<a href="mailto:arphaman@gmail.com" class="gmail-m_-712322968069030398m_-8492437529920739381gmail_msg" target="_blank">arphaman@gmail.com</a>> wrote:<br class="gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"></div></div></div></div></blockquote></div></div></div><div dir="ltr" class="gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail_extra gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><blockquote class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918HOEnZb gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918h5 gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><blockquote class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr" class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail_extra gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">On 29 June 2016 at 22:48, Zachary Turner via llvm-commits <span dir="ltr" class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><<a href="mailto:llvm-commits@lists.llvm.org" class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><blockquote class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Author: zturner<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">Date: Wed Jun 29 16:48:26 2016<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">New Revision: 274171<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">URL: <a href="http://llvm.org/viewvc/llvm-project?rev=274171&view=rev" rel="noreferrer" class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject?rev=274171&view=rev</a><br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">Log:<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">Resubmit "Update llvm command line parser to support subcommands." </blockquote></div></div></div></blockquote></div></div></div></blockquote></div></div></div></blockquote></div></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr" class="gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail_extra gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><blockquote class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918HOEnZb gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918h5 gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><blockquote class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr" class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail_extra gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><blockquote class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"> .... </blockquote></div></div></div></blockquote></div></div></div></blockquote></div></div></div></blockquote></div></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr" class="gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail_extra gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><blockquote class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918HOEnZb gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918h5 gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><blockquote class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr" class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail_extra gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><blockquote class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"> //===------------------------<wbr>------------------------------<wbr>----------------===//<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">@@ -1460,6 +1672,11 @@ static int OptNameCompare(const std::pai<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">   return strcmp(LHS->first, RHS->first);<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"> }<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+static int SubNameCompare(const std::pair<const char *, SubCommand *> *LHS,<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+                          const std::pair<const char *, SubCommand *> *RHS) {<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+  return strcmp(LHS->first, RHS->first);<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+}<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"> // Copy Options into a vector so we can sort them as we like.<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"> static void sortOpts(StringMap<Option *> &OptMap,<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">                      SmallVectorImpl<std::pair<cons<wbr>t char *, Option *>> &Opts,<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">@@ -1488,6 +1705,17 @@ static void sortOpts(StringMap<Option *><br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">   array_pod_sort(Opts.begin(), Opts.end(), OptNameCompare);<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"> }<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+static void<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+sortSubCommands(const SmallPtrSetImpl<SubCommand *> &SubMap,<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+                SmallVectorImpl<std::pair<cons<wbr>t char *, SubCommand *>> &Subs) {<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+  for (const auto &S : SubMap) {<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+    if (S->getName() == nullptr)<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+      continue;<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+    Subs.push_back(std::make_pair(<wbr>S->getName(), S));<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+  }<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+  array_pod_sort(Subs.begin(), Subs.end(), SubNameCompare);<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+}<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"> namespace {<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"> class HelpPrinter {<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">@@ -1495,12 +1723,25 @@ protected:<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">   const bool ShowHidden;<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">   typedef SmallVector<std::pair<const char *, Option *>, 128><br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">       StrOptionPairVector;<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+  typedef SmallVector<std::pair<const char *, SubCommand *>, 128><br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+      StrSubCommandPairVector;<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">   // Print the options. Opts is assumed to be alphabetically sorted.<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">   virtual void printOptions(StrOptionPairVect<wbr>or &Opts, size_t MaxArgLen) {<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">     for (size_t i = 0, e = Opts.size(); i != e; ++i)<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">       Opts[i].second->printOptionIn<wbr>fo(MaxArgLen);<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">   }<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+  void printSubCommands(StrSubCommand<wbr>PairVector &Subs, size_t MaxSubLen) {<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+    for (const auto &S : Subs) {<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+      outs() << "  " << S.first;<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+      if (S.second->getDescription()) {<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+        outs().indent(MaxSubLen - strlen(S.first));<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+        outs() << " - " << S.second->getDescription();<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+      }<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+      outs() << "\n";<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+    }<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+  }<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"> public:<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">   explicit HelpPrinter(bool showHidden) : ShowHidden(showHidden) {}<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">   virtual ~HelpPrinter() {}<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">@@ -1510,23 +1751,56 @@ public:<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">     if (!Value)<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">       return;<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+    SubCommand *Sub = GlobalParser->getActiveSubComm<wbr>and();<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+    auto &OptionsMap = Sub->OptionsMap;<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+    auto &PositionalOpts = Sub->PositionalOpts;<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+    auto &ConsumeAfterOpt = Sub->ConsumeAfterOpt;<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">     StrOptionPairVector Opts;<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">-    sortOpts(GlobalParser->Options<wbr>Map, Opts, ShowHidden);<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+    sortOpts(OptionsMap, Opts, ShowHidden);<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+    StrSubCommandPairVector Subs;<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+    sortSubCommands(GlobalParser-><wbr>RegisteredSubCommands, Subs);<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"></blockquote></div></div></div></blockquote></div></div></div></blockquote></div></div></div></blockquote></div></blockquote><div><br></div><div>We are checking `Subs.size() > 2` below, but `sortSubCommands` filters out the subcommands without a name, i.e. </div><div>the two builtin special subcommand instances. Thus the logic in the `Subs.size() > 2` check is invalid.</div><div><br></div><div>I'll try working on a patch to fix this,</div><div>Alex</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr" class="gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail_extra gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><blockquote class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918HOEnZb gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918h5 gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><blockquote class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr" class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail_extra gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><blockquote class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">     if (GlobalParser->ProgramOverview<wbr>)<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">       outs() << "OVERVIEW: " << GlobalParser->ProgramOverview << "\n";<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">-    outs() << "USAGE: " << GlobalParser->ProgramName << " [options]";<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+    if (Sub == &*TopLevelSubCommand)<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+      outs() << "USAGE: " << GlobalParser->ProgramName<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+             << " [subcommand] [options]";<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+    else {<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+      if (Sub->getDescription() != nullptr) {<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+        outs() << "SUBCOMMAND '" << Sub->getName()<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+               << "': " << Sub->getDescription() << "\n\n";<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+      }<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+      outs() << "USAGE: " << GlobalParser->ProgramName << " " << Sub->getName()<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+             << " [options]";<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+    }<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">-    for (auto Opt : GlobalParser->PositionalOpts) {<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+    for (auto Opt : PositionalOpts) {<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">       if (Opt->hasArgStr())<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">         outs() << " --" << Opt->ArgStr;<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">       outs() << " " << Opt->HelpStr;<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">     }<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">     // Print the consume after option info if it exists...<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">-    if (GlobalParser->ConsumeAfterOpt<wbr>)<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">-      outs() << " " << GlobalParser->ConsumeAfterOpt-<wbr>>HelpStr;<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+    if (ConsumeAfterOpt)<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+      outs() << " " << ConsumeAfterOpt->HelpStr;<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+    if (Sub == &*TopLevelSubCommand && Subs.size() > 2) {<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"></blockquote><div class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"></div></div></div></div><div dir="ltr" class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail_extra gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">I'm sorry if I missed something, but I looked at the review for this commit, and couldn't find an answer to one question that I have, so I hope that you can help me:<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"></div><div class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"></div><div class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">Is the > 2 intentional here? I think because of this check subcommands don't show up in help unless there are 3 of them. It seems like a bug to me, since it's valid to have a tool with just 2 subcommands.</div><div class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"></div><div class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">Thanks,</div><div class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">Alex</div></div></div></div></blockquote></div></div></div></blockquote></div></div></div><div dir="ltr" class="gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail_extra gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><blockquote class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918HOEnZb gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918h5 gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><blockquote class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr" class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail_extra gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><div class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><blockquote class="gmail_quote gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">+      // Compute the maximum subcommand length...<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+      size_t MaxSubLen = 0;<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+      for (size_t i = 0, e = Subs.size(); i != e; ++i)<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+        MaxSubLen = std::max(MaxSubLen, strlen(Subs[i].first));<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+      outs() << "\n\n";<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+      outs() << "SUBCOMMANDS:\n\n";<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+      printSubCommands(Subs, MaxSubLen);<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+      outs() << "\n";<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+      outs() << "  Type \"" << GlobalParser->ProgramName<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+             << " <subcommand> -help\" to get more help on a specific "<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+                "subcommand";<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">+    }<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">     outs() << "\n\n";<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg">@@ -1675,12 +1949,13 @@ static cl::opt<HelpPrinter, true, parser<br class="gmail-m_-712322968069030398m_-8492437529920739381m_-3955298781657401918m_1046857407579580143gmail_msg gmail-m_-712322968069030398m_-8492437529920739381gmail_msg"><br></blockquote></div></div></div></blockquote></div></div></div></blockquote></div></div></div></blockquote></div></blockquote></div></div></div>