From: Bill Wendling Date: Fri, 27 Jun 2008 00:56:36 +0000 (+0000) Subject: - Remove a use of std::vector. X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=e6b6bae536a382ca76c738275b82c73b026cd6bf;p=oota-llvm.git - Remove a use of std::vector. - 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 --- diff --git a/include/llvm/CodeGen/MachineDebugInfoDesc.h b/include/llvm/CodeGen/MachineDebugInfoDesc.h index a79a12170dd..926733f6665 100644 --- a/include/llvm/CodeGen/MachineDebugInfoDesc.h +++ b/include/llvm/CodeGen/MachineDebugInfoDesc.h @@ -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(File); } - unsigned getLine() const { return Line; } + unsigned getLine() const { return Line; } TypeDesc *getType() const { return static_cast(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(U); } - void setLine(unsigned L) { Line = L; } + void setLine(unsigned L) { Line = L; } void setType(TypeDesc *T) { TyDesc = static_cast(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. /// diff --git a/include/llvm/CodeGen/MachineModuleInfo.h b/include/llvm/CodeGen/MachineModuleInfo.h index 5b27da1f9af..748dfd68ced 100644 --- a/include/llvm/CodeGen/MachineModuleInfo.h +++ b/include/llvm/CodeGen/MachineModuleInfo.h @@ -591,7 +591,7 @@ public: /// getFilterIDFor - Return the id of the filter encoded by TyIds. This is /// function wide. - int getFilterIDFor(std::vector &TyIds); + int getFilterIDFor(SmallVectorImpl &TyIds); /// TidyLandingPads - Remap landing pad labels and remove any deleted landing /// pads. diff --git a/lib/CodeGen/MachineModuleInfo.cpp b/lib/CodeGen/MachineModuleInfo.cpp index 800a522f4bf..8aba86ed8ea 100644 --- a/lib/CodeGen/MachineModuleInfo.cpp +++ b/lib/CodeGen/MachineModuleInfo.cpp @@ -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 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 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 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 &TyInfo) { LandingPadInfo &LP = getOrCreateLandingPadInfo(LandingPad); - std::vector IdsInFilter (TyInfo.size()); + SmallVector 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 &TyIds) { +int MachineModuleInfo::getFilterIDFor(SmallVectorImpl &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::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 &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; }