- Remove a use of std::vector.
authorBill Wendling <isanbard@gmail.com>
Fri, 27 Jun 2008 00:56:36 +0000 (00:56 +0000)
committerBill Wendling <isanbard@gmail.com>
Fri, 27 Jun 2008 00:56:36 +0000 (00:56 +0000)
- Make sure that we're not recalculating the size of a vector
  that never changes.

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

include/llvm/CodeGen/MachineDebugInfoDesc.h
include/llvm/CodeGen/MachineModuleInfo.h
lib/CodeGen/MachineModuleInfo.cpp

index a79a12170dd6b413538cef2f2b8816678171722b..926733f666556c157e9718d887c3efdb9189b809 100644 (file)
@@ -407,10 +407,10 @@ public:
   SubrangeDesc();
   
   // Accessors
-  int64_t getLo()                            const { return Lo; }
-  int64_t getHi()                            const { return Hi; }
-  void setLo(int64_t L)                            { Lo = L; }
-  void setHi(int64_t H)                            { Hi = H; }
+  int64_t getLo() const { return Lo; }
+  int64_t getHi() const { return Hi; }
+  void setLo(int64_t L) { Lo = L; }
+  void setHi(int64_t H) { Hi = H; }
   
   /// ApplyToFields - Target the visitor to the fields of the SubrangeDesc.
   ///
@@ -552,32 +552,34 @@ protected:
   explicit GlobalDesc(unsigned T);
 public:
   // Accessors
-  DebugInfoDesc *getContext()                const { return Context; }
-  const std::string &getName()               const { return Name; }
-  const std::string &getFullName()           const { return FullName; }
-  const std::string &getLinkageName()        const { return LinkageName; }
+  DebugInfoDesc *getContext() const         { return Context; }
+  const std::string &getName() const        { return Name; }
+  const std::string &getFullName() const    { return FullName; }
+  const std::string &getLinkageName() const { return LinkageName; }
   CompileUnitDesc *getFile() const {
     return static_cast<CompileUnitDesc *>(File);
   }
-  unsigned getLine()                         const { return Line; }
+  unsigned getLine() const { return Line; }
   TypeDesc *getType() const {
     return static_cast<TypeDesc *>(TyDesc);
   }
-  bool isStatic()                            const { return IsStatic; }
-  bool isDefinition()                        const { return IsDefinition; }
-  void setContext(DebugInfoDesc *C)                { Context = C; }
-  void setName(const std::string &N)               { Name = N; }
-  void setFullName(const std::string &N)           { FullName = N; }
-  void setLinkageName(const std::string &N)        { LinkageName = N; }
+
+  bool isStatic() const     { return IsStatic; }
+  bool isDefinition() const { return IsDefinition; }
+
+  void setContext(DebugInfoDesc *C)         { Context = C; }
+  void setName(const std::string &N)        { Name = N; }
+  void setFullName(const std::string &N)    { FullName = N; }
+  void setLinkageName(const std::string &N) { LinkageName = N; }
   void setFile(CompileUnitDesc *U) {
     File = static_cast<DebugInfoDesc *>(U);
   }
-  void setLine(unsigned L)                         { Line = L; }
+  void setLine(unsigned L) { Line = L; }
   void setType(TypeDesc *T) {
     TyDesc = static_cast<DebugInfoDesc *>(T);
   }
-  void setIsStatic(bool IS)                        { IsStatic = IS; }
-  void setIsDefinition(bool ID)                    { IsDefinition = ID; }
+  void setIsStatic(bool IS)     { IsStatic = IS; }
+  void setIsDefinition(bool ID) { IsDefinition = ID; }
 
   /// ApplyToFields - Target the visitor to the fields of the GlobalDesc.
   ///
@@ -593,8 +595,8 @@ public:
   GlobalVariableDesc();
 
   // Accessors.
-  GlobalVariable *getGlobalVariable()        const { return Global; }
-  void setGlobalVariable(GlobalVariable *GV)       { Global = GV; }
+  GlobalVariable *getGlobalVariable() const { return Global; }
+  void setGlobalVariable(GlobalVariable *GV) { Global = GV; }
   
   /// ApplyToFields - Target the visitor to the fields of the
   /// GlobalVariableDesc.
@@ -673,8 +675,8 @@ public:
   BlockDesc();
   
   // Accessors
-  DebugInfoDesc *getContext()                const { return Context; }
-  void setContext(DebugInfoDesc *C)                { Context = C; }
+  DebugInfoDesc *getContext() const { return Context; }
+  void setContext(DebugInfoDesc *C) { Context = C; }
   
   /// ApplyToFields - Target the visitor to the fields of the BlockDesc.
   ///
index 5b27da1f9af9737f119abf04d966b2bab7dc11de..748dfd68ced4ffe18072b18e620b27b85ca035d3 100644 (file)
@@ -591,7 +591,7 @@ public:
 
   /// getFilterIDFor - Return the id of the filter encoded by TyIds.  This is
   /// function wide.
-  int getFilterIDFor(std::vector<unsigned> &TyIds);
+  int getFilterIDFor(SmallVectorImpl<unsigned> &TyIds);
 
   /// TidyLandingPads - Remap landing pad labels and remove any deleted landing
   /// pads.
index 800a522f4bf22f5e7d52a7a6453f0cd07b2500ee..8aba86ed8ea502f4005e9c560b111364e646ba46 100644 (file)
@@ -513,8 +513,8 @@ const PointerType *DISerializer::getEmptyStructPtrType() {
   // If not already defined.
   if (!EmptyStructPtrTy) {
     // Construct the empty structure type.
-    const StructType *EmptyStructTy =
-                                    StructType::get(std::vector<const Type*>());
+    const StructType *EmptyStructTy = StructType::get(NULL, NULL);
+
     // Construct the pointer to empty structure type.
     EmptyStructPtrTy = PointerType::getUnqual(EmptyStructTy);
   }
@@ -532,6 +532,7 @@ const StructType *DISerializer::getTagType(DebugInfoDesc *DD) {
   if (!Ty) {
     // Set up fields vector.
     std::vector<const Type*> Fields;
+
     // Get types of fields.
     DIGetTypesVisitor GTAM(*this, Fields);
     GTAM.ApplyToFields(DD);
@@ -551,22 +552,27 @@ const StructType *DISerializer::getTagType(DebugInfoDesc *DD) {
 Constant *DISerializer::getString(const std::string &String) {
   // Check string cache for previous edition.
   Constant *&Slot = StringCache[String];
+
   // Return Constant if previously defined.
   if (Slot) return Slot;
+
   // If empty string then use a sbyte* null instead.
   if (String.empty()) {
     Slot = ConstantPointerNull::get(getStrPtrType());
   } else {
     // Construct string as an llvm constant.
     Constant *ConstStr = ConstantArray::get(String);
+
     // Otherwise create and return a new string global.
     GlobalVariable *StrGV = new GlobalVariable(ConstStr->getType(), true,
                                                GlobalVariable::InternalLinkage,
                                                ConstStr, ".str", M);
     StrGV->setSection("llvm.metadata");
+
     // Convert to generic string pointer.
     Slot = ConstantExpr::getBitCast(StrGV, getStrPtrType());
   }
+
   return Slot;
   
 }
@@ -593,6 +599,7 @@ GlobalVariable *DISerializer::Serialize(DebugInfoDesc *DD) {
  
   // Set up elements vector
   std::vector<Constant*> Elements;
+
   // Add fields.
   DISerializeVisitor SRAM(*this, Elements);
   SRAM.ApplyToFields(DD);
@@ -996,9 +1003,11 @@ void MachineModuleInfo::addCatchTypeInfo(MachineBasicBlock *LandingPad,
 void MachineModuleInfo::addFilterTypeInfo(MachineBasicBlock *LandingPad,
                                         std::vector<GlobalVariable *> &TyInfo) {
   LandingPadInfo &LP = getOrCreateLandingPadInfo(LandingPad);
-  std::vector<unsigned> IdsInFilter (TyInfo.size());
+  SmallVector<unsigned, 32> IdsInFilter(TyInfo.size());
+
   for (unsigned I = 0, E = TyInfo.size(); I != E; ++I)
     IdsInFilter[I] = getTypeIDFor(TyInfo[I]);
+
   LP.TypeIds.push_back(getFilterIDFor(IdsInFilter));
 }
 
@@ -1066,13 +1075,14 @@ unsigned MachineModuleInfo::getTypeIDFor(GlobalVariable *TI) {
 
 /// getFilterIDFor - Return the filter id for the specified typeinfos.  This is
 /// function wide.
-int MachineModuleInfo::getFilterIDFor(std::vector<unsigned> &TyIds) {
+int MachineModuleInfo::getFilterIDFor(SmallVectorImpl<unsigned> &TyIds) {
   // If the new filter coincides with the tail of an existing filter, then
   // re-use the existing filter.  Folding filters more than this requires
   // re-ordering filters and/or their elements - probably not worth it.
+  unsigned TyIDSize = TyIds.size();
   for (std::vector<unsigned>::iterator I = FilterEnds.begin(),
        E = FilterEnds.end(); I != E; ++I) {
-    unsigned i = *I, j = TyIds.size();
+    unsigned i = *I, j = TyIDSize;
 
     while (i && j)
       if (FilterIds[--i] != TyIds[--j])
@@ -1081,16 +1091,18 @@ int MachineModuleInfo::getFilterIDFor(std::vector<unsigned> &TyIds) {
     if (!j)
       // The new filter coincides with range [i, end) of the existing filter.
       return -(1 + i);
-
 try_next:;
   }
 
   // Add the new filter.
-  int FilterID = -(1 + FilterIds.size());
-  FilterIds.reserve(FilterIds.size() + TyIds.size() + 1);
-  for (unsigned I = 0, N = TyIds.size(); I != N; ++I)
+  unsigned FilterIDSize = FilterIds.size();
+  int FilterID = -(1 + FilterIDSize);
+  FilterIds.reserve(FilterIDSize + TyIDSize + 1);
+
+  for (unsigned I = 0, N = TyIDSize; I != N; ++I)
     FilterIds.push_back(TyIds[I]);
-  FilterEnds.push_back(FilterIds.size());
+
+  FilterEnds.push_back(FilterIDSize);
   FilterIds.push_back(0); // terminator
   return FilterID;
 }
@@ -1108,13 +1120,13 @@ unsigned MachineModuleInfo::getPersonalityIndex() const {
   const Function* Personality = NULL;
   
   // Scan landing pads. If there is at least one non-NULL personality - use it.
-  for (unsigned i = 0; i != LandingPads.size(); ++i)
+  for (unsigned i = 0, e = LandingPads.size(); i != e; ++i)
     if (LandingPads[i].Personality) {
       Personality = LandingPads[i].Personality;
       break;
     }
   
-  for (unsigned i = 0; i < Personalities.size(); ++i) {
+  for (unsigned i = 0, e = Personalities.size(); i < e; ++i) {
     if (Personalities[i] == Personality)
       return i;
   }