[llvm] Convert OptTable::ParseOneArg() to std::unique_ptr<>
authorNico Weber <thakis@chromium.org>
Mon, 27 Sep 2021 15:19:04 +0000 (11:19 -0400)
committerNico Weber <thakis@chromium.org>
Mon, 27 Sep 2021 15:19:21 +0000 (11:19 -0400)
llvm/include/llvm/Option/OptTable.h
llvm/lib/Option/OptTable.cpp

index 30c39471e2aa0de7a518ddad72d41a1c80c64cb6..4388e7efc8ae160f090c5bd31ec0fc60b973f4c7 100644 (file)
@@ -200,9 +200,9 @@ public:
   /// \return The parsed argument, or 0 if the argument is missing values
   /// (in which case Index still points at the conceptual next argument string
   /// to parse).
-  Arg *ParseOneArg(const ArgList &Args, unsigned &Index,
-                   unsigned FlagsToInclude = 0,
-                   unsigned FlagsToExclude = 0) const;
+  std::unique_ptr<Arg> ParseOneArg(const ArgList &Args, unsigned &Index,
+                                   unsigned FlagsToInclude = 0,
+                                   unsigned FlagsToExclude = 0) const;
 
   /// Parse an list of arguments into an InputArgList.
   ///
index fb83a2b73e78c1263763807fd46cae67c8e4298b..405e18e2c2fd2b66e1aa0acf3769068574b09fd5 100644 (file)
@@ -402,16 +402,17 @@ std::unique_ptr<Arg> OptTable::parseOneArgGrouped(InputArgList &Args,
                                CStr);
 }
 
-Arg *OptTable::ParseOneArg(const ArgList &Args, unsigned &Index,
-                           unsigned FlagsToInclude,
-                           unsigned FlagsToExclude) const {
+std::unique_ptr<Arg> OptTable::ParseOneArg(const ArgList &Args, unsigned &Index,
+                                           unsigned FlagsToInclude,
+                                           unsigned FlagsToExclude) const {
   unsigned Prev = Index;
   const char *Str = Args.getArgString(Index);
 
   // Anything that doesn't start with PrefixesUnion is an input, as is '-'
   // itself.
   if (isInput(PrefixesUnion, Str))
-    return new Arg(getOption(TheInputOptionID), Str, Index++, Str);
+    return std::make_unique<Arg>(getOption(TheInputOptionID), Str, Index++,
+                                 Str);
 
   const Info *Start = OptionInfos.data() + FirstSearchableIndex;
   const Info *End = OptionInfos.data() + OptionInfos.size();
@@ -447,7 +448,7 @@ Arg *OptTable::ParseOneArg(const ArgList &Args, unsigned &Index,
     // See if this option matches.
     if (std::unique_ptr<Arg> A = Opt.accept(
             Args, StringRef(Args.getArgString(Index), ArgSize), false, Index))
-      return A.release();
+      return A;
 
     // Otherwise, see if this argument was missing values.
     if (Prev != Index)
@@ -457,9 +458,11 @@ Arg *OptTable::ParseOneArg(const ArgList &Args, unsigned &Index,
   // If we failed to find an option and this arg started with /, then it's
   // probably an input path.
   if (Str[0] == '/')
-    return new Arg(getOption(TheInputOptionID), Str, Index++, Str);
+    return std::make_unique<Arg>(getOption(TheInputOptionID), Str, Index++,
+                                 Str);
 
-  return new Arg(getOption(TheUnknownOptionID), Str, Index++, Str);
+  return std::make_unique<Arg>(getOption(TheUnknownOptionID), Str, Index++,
+                               Str);
 }
 
 InputArgList OptTable::ParseArgs(ArrayRef<const char *> ArgArr,
@@ -487,8 +490,8 @@ InputArgList OptTable::ParseArgs(ArrayRef<const char *> ArgArr,
     }
 
     unsigned Prev = Index;
-    Arg *A = GroupedShortOptions
-                 ? parseOneArgGrouped(Args, Index).release()
+    std::unique_ptr<Arg> A = GroupedShortOptions
+                 ? parseOneArgGrouped(Args, Index)
                  : ParseOneArg(Args, Index, FlagsToInclude, FlagsToExclude);
     assert((Index > Prev || GroupedShortOptions) &&
            "Parser failed to consume argument.");
@@ -502,7 +505,7 @@ InputArgList OptTable::ParseArgs(ArrayRef<const char *> ArgArr,
       break;
     }
 
-    Args.append(A);
+    Args.append(A.release());
   }
 
   return Args;