diff options
| author | Daniel Dunbar <daniel@zuster.org> | 2009-10-19 01:21:19 +0000 |
|---|---|---|
| committer | Daniel Dunbar <daniel@zuster.org> | 2009-10-19 01:21:19 +0000 |
| commit | d2386811133af2d99ddebcd369c66b529eca64bb (patch) | |
| tree | 48aaca3204610d73b2085db78d8a46f2fb01e79d | |
| parent | 0914afe1d14343a1d4d1d22333323fc2c99dbfaa (diff) | |
| download | bcm5719-llvm-d2386811133af2d99ddebcd369c66b529eca64bb.tar.gz bcm5719-llvm-d2386811133af2d99ddebcd369c66b529eca64bb.zip | |
Avoid std::string concatenation.
llvm-svn: 84458
| -rw-r--r-- | clang/lib/CodeGen/CGObjCMac.cpp | 26 |
1 files changed, 10 insertions, 16 deletions
diff --git a/clang/lib/CodeGen/CGObjCMac.cpp b/clang/lib/CodeGen/CGObjCMac.cpp index db32f174ffc..9b2f4a1faee 100644 --- a/clang/lib/CodeGen/CGObjCMac.cpp +++ b/clang/lib/CodeGen/CGObjCMac.cpp @@ -850,7 +850,7 @@ protected: /// \param[out] NameOut - The return value. void GetNameForMethod(const ObjCMethodDecl *OMD, const ObjCContainerDecl *CD, - std::string &NameOut); + llvm::SmallVectorImpl<char> &NameOut); /// GetMethodVarName - Return a unique constant for the given /// selector's name. The return value has type char *. @@ -2302,7 +2302,7 @@ llvm::Constant *CGObjCMac::EmitMethodList(llvm::Twine Name, llvm::Function *CGObjCCommonMac::GenerateMethod(const ObjCMethodDecl *OMD, const ObjCContainerDecl *CD) { - std::string Name; + llvm::SmallString<256> Name; GetNameForMethod(OMD, CD, Name); CodeGenTypes &Types = CGM.getTypes(); @@ -2311,7 +2311,7 @@ llvm::Function *CGObjCCommonMac::GenerateMethod(const ObjCMethodDecl *OMD, llvm::Function *Method = llvm::Function::Create(MethodTy, llvm::GlobalValue::InternalLinkage, - Name, + Name.str(), &CGM.getModule()); MethodDefinitions.insert(std::make_pair(OMD, Method)); @@ -3449,21 +3449,15 @@ CGObjCCommonMac::GetPropertyTypeString(const ObjCPropertyDecl *PD, void CGObjCCommonMac::GetNameForMethod(const ObjCMethodDecl *D, const ObjCContainerDecl *CD, - std::string &NameOut) { - NameOut = '\01'; - NameOut += (D->isInstanceMethod() ? '-' : '+'); - NameOut += '['; + llvm::SmallVectorImpl<char> &Name) { + llvm::raw_svector_ostream OS(Name); assert (CD && "Missing container decl in GetNameForMethod"); - NameOut += CD->getNameAsString(); + OS << '\01' << (D->isInstanceMethod() ? '-' : '+') + << '[' << CD->getName(); if (const ObjCCategoryImplDecl *CID = - dyn_cast<ObjCCategoryImplDecl>(D->getDeclContext())) { - NameOut += '('; - NameOut += CID->getNameAsString(); - NameOut+= ')'; - } - NameOut += ' '; - NameOut += D->getSelector().getAsString(); - NameOut += ']'; + dyn_cast<ObjCCategoryImplDecl>(D->getDeclContext())) + OS << '(' << CID->getNameAsString() << ')'; + OS << ' ' << D->getSelector().getAsString() << ']'; } void CGObjCMac::FinishModule() { |

