Switch some vectors to smallvectors. This reduces amount of malloc'd
authorChris Lattner <sabre@nondot.org>
Fri, 6 Apr 2007 18:36:18 +0000 (18:36 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 6 Apr 2007 18:36:18 +0000 (18:36 +0000)
memory that occurs before main starts from 5104 to 4864 bytes with a dummy
example app.

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

include/llvm/Support/CommandLine.h

index 69a3d6c5921a6d13996f9ff0bac6cd0867feab38..4758ff5b399b5c9290f6bb87eb02b2ea6b130f9f 100644 (file)
@@ -23,6 +23,7 @@
 #include "llvm/Support/type_traits.h"
 #include "llvm/Support/DataTypes.h"
 #include "llvm/Support/Compiler.h"
+#include "llvm/ADT/SmallVector.h"
 #include <string>
 #include <vector>
 #include <utility>
@@ -303,7 +304,7 @@ class ValuesClass {
   // Use a vector instead of a map, because the lists should be short,
   // the overhead is less, and most importantly, it keeps them in the order
   // inserted so we can print our option out nicely.
-  std::vector<std::pair<const char *, std::pair<int, const char *> > > Values;
+  SmallVector<std::pair<const char *, std::pair<int, const char *> >,4> Values;
   void processValues(va_list Vals);
 public:
   ValuesClass(const char *EnumName, DataType Val, const char *Desc,
@@ -424,8 +425,8 @@ protected:
 template <class DataType>
 class parser : public generic_parser_base {
 protected:
-  std::vector<std::pair<const char *,
-                        std::pair<DataType, const char *> > > Values;
+  SmallVector<std::pair<const char *,
+                        std::pair<DataType, const char *> >, 8> Values;
 public:
   typedef DataType parser_data_type;
 
@@ -454,7 +455,8 @@ public:
     return O.error(": Cannot find option named '" + ArgVal + "'!");
   }
 
-  // addLiteralOption - Add an entry to the mapping table...
+  /// addLiteralOption - Add an entry to the mapping table.
+  ///
   template <class DT>
   void addLiteralOption(const char *Name, const DT &V, const char *HelpStr) {
     assert(findOption(Name) == Values.size() && "Option already exists!");
@@ -462,8 +464,8 @@ public:
                              std::make_pair(static_cast<DataType>(V),HelpStr)));
   }
 
-  // removeLiteralOption - Remove the specified option.
-  //
+  /// removeLiteralOption - Remove the specified option.
+  ///
   void removeLiteralOption(const char *Name) {
     unsigned N = findOption(Name);
     assert(N != Values.size() && "Option not found!");