[llvm] 6ffd8e3 - [llvm] Convert OptTable::ParseOneArg() to std::unique_ptr<>

Nico Weber via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 27 08:19:45 PDT 2021


Author: Nico Weber
Date: 2021-09-27T11:19:21-04:00
New Revision: 6ffd8e39028d63dc213354c8cba8c79583d57c3e

URL: https://github.com/llvm/llvm-project/commit/6ffd8e39028d63dc213354c8cba8c79583d57c3e
DIFF: https://github.com/llvm/llvm-project/commit/6ffd8e39028d63dc213354c8cba8c79583d57c3e.diff

LOG: [llvm] Convert OptTable::ParseOneArg() to std::unique_ptr<>

Added: 
    

Modified: 
    llvm/include/llvm/Option/OptTable.h
    llvm/lib/Option/OptTable.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/include/llvm/Option/OptTable.h b/llvm/include/llvm/Option/OptTable.h
index 30c39471e2aa..4388e7efc8ae 100644
--- a/llvm/include/llvm/Option/OptTable.h
+++ b/llvm/include/llvm/Option/OptTable.h
@@ -200,9 +200,9 @@ class OptTable {
   /// \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.
   ///

diff  --git a/llvm/lib/Option/OptTable.cpp b/llvm/lib/Option/OptTable.cpp
index fb83a2b73e78..405e18e2c2fd 100644
--- a/llvm/lib/Option/OptTable.cpp
+++ b/llvm/lib/Option/OptTable.cpp
@@ -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;


        


More information about the llvm-commits mailing list