Use range based loop to iterate over OptTable::PrefixesUnion
authorserge-sans-paille <sguelton@mozilla.com>
Fri, 16 Dec 2022 14:10:34 +0000 (15:10 +0100)
committerserge-sans-paille <sguelton@mozilla.com>
Fri, 16 Dec 2022 14:12:31 +0000 (15:12 +0100)
And sneak in a small storage optimization of OptTable::PrefixChars

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

index e884ebe..10d67b1 100644 (file)
@@ -10,6 +10,7 @@
 #define LLVM_OPTION_OPTTABLE_H
 
 #include "llvm/ADT/ArrayRef.h"
+#include "llvm/ADT/SmallString.h"
 #include "llvm/ADT/StringRef.h"
 #include "llvm/ADT/StringSet.h"
 #include "llvm/Option/OptSpecifier.h"
@@ -74,7 +75,7 @@ private:
   /// The union of all option prefixes. If an argument does not begin with
   /// one of these, it is an input.
   StringSet<> PrefixesUnion;
-  std::string PrefixChars;
+  SmallString<8> PrefixChars;
 
 private:
   const Info &getInfo(OptSpecifier Opt) const {
index d579e1b..786760f 100644 (file)
@@ -139,9 +139,7 @@ OptTable::OptTable(ArrayRef<Info> OptionInfos, bool IgnoreCase)
   }
 
   // Build prefix chars.
-  for (StringSet<>::const_iterator I = PrefixesUnion.begin(),
-                                   E = PrefixesUnion.end(); I != E; ++I) {
-    StringRef Prefix = I->getKey();
+  for (const StringRef &Prefix : PrefixesUnion.keys()) {
     for (char C : Prefix)
       if (!is_contained(PrefixChars, C))
         PrefixChars.push_back(C);
@@ -161,9 +159,8 @@ const Option OptTable::getOption(OptSpecifier Opt) const {
 static bool isInput(const StringSet<> &Prefixes, StringRef Arg) {
   if (Arg == "-")
     return true;
-  for (StringSet<>::const_iterator I = Prefixes.begin(),
-                                   E = Prefixes.end(); I != E; ++I)
-    if (Arg.startswith(I->getKey()))
+  for (const StringRef &Prefix : Prefixes.keys())
+    if (Arg.startswith(Prefix))
       return false;
   return true;
 }