summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2010-11-12 18:45:23 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2010-11-12 18:45:23 +0000
commitc78d86a2af243d439ca03fa0e69e649c9556c31b (patch)
treee53c82a5c43f39f27ef53e0a6e7bb88bff9d77e8 /clang/lib/CodeGen
parentc4f4b2e8782fddf6b73ff51b1893af9d8a69b868 (diff)
downloadbcm5719-llvm-c78d86a2af243d439ca03fa0e69e649c9556c31b.tar.gz
bcm5719-llvm-c78d86a2af243d439ca03fa0e69e649c9556c31b.zip
Reduce string thrashing.
llvm-svn: 118915
Diffstat (limited to 'clang/lib/CodeGen')
-rw-r--r--clang/lib/CodeGen/CodeGenTypes.cpp29
1 files changed, 17 insertions, 12 deletions
diff --git a/clang/lib/CodeGen/CodeGenTypes.cpp b/clang/lib/CodeGen/CodeGenTypes.cpp
index 87cab311d4e..84c1ceb1ffe 100644
--- a/clang/lib/CodeGen/CodeGenTypes.cpp
+++ b/clang/lib/CodeGen/CodeGenTypes.cpp
@@ -371,26 +371,31 @@ const llvm::Type *CodeGenTypes::ConvertNewType(QualType T) {
const TagDecl *TD = cast<TagType>(Ty).getDecl();
const llvm::Type *Res = ConvertTagDeclType(TD);
- std::string TypeName(TD->getKindName());
- TypeName += '.';
+ llvm::SmallString<256> TypeName;
+ llvm::raw_svector_ostream OS(TypeName);
+ OS << TD->getKindName() << '.';
// Name the codegen type after the typedef name
// if there is no tag type name available
- if (TD->getIdentifier())
+ if (TD->getIdentifier()) {
// FIXME: We should not have to check for a null decl context here.
// Right now we do it because the implicit Obj-C decls don't have one.
- TypeName += TD->getDeclContext() ? TD->getQualifiedNameAsString() :
- TD->getNameAsString();
- else if (const TypedefType *TdT = dyn_cast<TypedefType>(T))
+ if (TD->getDeclContext())
+ OS << TD->getQualifiedNameAsString();
+ else
+ TD->printName(OS);
+ } else if (const TypedefType *TdT = dyn_cast<TypedefType>(T)) {
// FIXME: We should not have to check for a null decl context here.
// Right now we do it because the implicit Obj-C decls don't have one.
- TypeName += TdT->getDecl()->getDeclContext() ?
- TdT->getDecl()->getQualifiedNameAsString() :
- TdT->getDecl()->getNameAsString();
- else
- TypeName += "anon";
+ if (TdT->getDecl()->getDeclContext())
+ OS << TdT->getDecl()->getQualifiedNameAsString();
+ else
+ TdT->getDecl()->printName(OS);
+ } else {
+ OS << "anon";
+ }
- TheModule.addTypeName(TypeName, Res);
+ TheModule.addTypeName(OS.str(), Res);
return Res;
}
OpenPOWER on IntegriCloud