diff options
| author | Benjamin Kramer <benny.kra@googlemail.com> | 2010-11-12 18:45:23 +0000 |
|---|---|---|
| committer | Benjamin Kramer <benny.kra@googlemail.com> | 2010-11-12 18:45:23 +0000 |
| commit | c78d86a2af243d439ca03fa0e69e649c9556c31b (patch) | |
| tree | e53c82a5c43f39f27ef53e0a6e7bb88bff9d77e8 /clang/lib/CodeGen | |
| parent | c4f4b2e8782fddf6b73ff51b1893af9d8a69b868 (diff) | |
| download | bcm5719-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.cpp | 29 |
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; } |

