Remove AllowInverse: it leaks memory and is not the right
authorChris Lattner <sabre@nondot.org>
Wed, 8 Apr 2009 03:43:51 +0000 (03:43 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 8 Apr 2009 03:43:51 +0000 (03:43 +0000)
abstraction for CommandLine.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68588 91177308-0d34-0410-b5e6-96231b3b80d8

docs/CommandLine.html
include/llvm/Support/CommandLine.h
lib/Support/CommandLine.cpp

index 013ff27d1921c3ee7e5c7206bea2b17201209a1a..74cf389894a8e00262dcf970c59cd1eac04ce3e5 100644 (file)
@@ -1447,17 +1447,6 @@ unrecognized option strings to it as values instead of signaling an
 error. As with <b><tt>cl::CommaSeparated</tt></b></a>, this modifier
 only makes sense with a <a href="#cl::list">cl::list</a> option.</li>
 
-<li><a name="cl::AllowInverse">The <b><tt>cl::AllowInverse</tt></b></a>
-modifier can be used on options that have the form <tt>-fopt</tt> to
-automatically create a corresponding
-<tt>-fno-opt</tt> option.  The <tt>f</tt> can be any single
-character, and the <tt>opt</tt> can be any one or more characters.
-The value of the created option is the logical complement of the value
-that would have been used if the base form of the option was used.
-This modifier only makes sense with an option that uses
-a <a href="#boolparser">bool parser</a>.</li>
-
-
 </ul>
 
 <p>So far, these are the only three miscellaneous option modifiers.</p>
@@ -1755,11 +1744,7 @@ for any data type.</li>
 <li><a name="boolparser">The <b><tt>parser&lt;bool&gt;</tt> specialization</b></a>
 is used to convert boolean strings to a boolean value.  Currently accepted
 strings are "<tt>true</tt>", "<tt>TRUE</tt>", "<tt>True</tt>", "<tt>1</tt>",
-"<tt>false</tt>", "<tt>FALSE</tt>", "<tt>False</tt>", and "<tt>0</tt>".  The
-<b><tt>cl::AllowInverse</tt></b> modifier can be used on an option of the form
-<tt>-fopt</tt> that uses the <tt>parser&lt;bool&gt;</tt> specialization
-to create a corresponding option with the form <tt>-fno-opt</tt>.  See
-<a href="#cl::AllowInverse"><tt>cl::AllowInverse</tt></a> for details.</li>
+"<tt>false</tt>", "<tt>FALSE</tt>", "<tt>False</tt>", and "<tt>0</tt>".</li>
 
 <li><a name="boolOrDefaultparser">The <b><tt>parser&lt;boolOrDefault&gt;</tt>
  specialization</b></a> is used for cases where the value is boolean,
index 6b05e602eff1ab85bdd4405953979a700d27e251..1b625588d28c967838d4deb73157fc52fde7baaf 100644 (file)
@@ -127,8 +127,7 @@ enum MiscFlags {               // Miscellaneous flags to adjust argument
   CommaSeparated     = 0x200,  // Should this cl::list split between commas?
   PositionalEatsArgs = 0x400,  // Should this positional cl::list eat -args?
   Sink               = 0x800,  // Should this cl::list eat all unknown options?
-  AllowInverse      = 0x1000, // Can this option take a -Xno- form?
-  MiscMask           = 0x1E00  // Union of the above flags.
+  MiscMask           = 0xE00   // Union of the above flags.
 };
 
 
@@ -538,17 +537,14 @@ struct basic_parser : public basic_parser_impl {
 //
 template<>
 class parser<bool> : public basic_parser<bool> {
-  bool IsInvertible;   // Should we synthesize a -xno- style option?
   const char *ArgStr;
 public:
-  void getExtraOptionNames(std::vector<const char*> &OptionNames);
   
   // parse - Return true on error.
   bool parse(Option &O, const char *ArgName, const std::string &Arg, bool &Val);
 
   template <class Opt>
   void initialize(Opt &O) {
-    IsInvertible = (O.getMiscFlags() & llvm::cl::AllowInverse);
     ArgStr = O.ArgStr;
   }
 
index 710b210ab99a4b5b7898ed2b2fe6effde52e4ea9..e4f65ba1de94885fe7e2f92941efabf424f528e6 100644 (file)
@@ -872,30 +872,9 @@ bool parser<bool>::parse(Option &O, const char *ArgName,
     return O.error(": '" + Arg +
                    "' is invalid value for boolean argument! Try 0 or 1");
   }
-  if (IsInvertible && strncmp(ArgName+1, "no-", 3) == 0)
-    Value = !Value;
   return false;
 }
 
-void parser<bool>::getExtraOptionNames(std::vector<const char*> &OptionNames) {
-  if (!IsInvertible)
-    return;
-  
-  char *s = new char [strlen(ArgStr) + 3 + 1];
-  s[0] = ArgStr[0];
-  if (strncmp(ArgStr+1, "no-", 3) == 0)
-    strcpy(&s[1], &ArgStr[4]);
-  else {
-    s[1] = 'n';
-    s[2] = 'o';
-    s[3] = '-';
-    strcpy(&s[4], ArgStr+1);
-  }
-  OptionNames.push_back(s);
-}
-
-
-
 // parser<boolOrDefault> implementation
 //
 bool parser<boolOrDefault>::parse(Option &O, const char *ArgName,