]> granicus.if.org Git - clang/commitdiff
Avoid std::string concatenation.
authorDaniel Dunbar <daniel@zuster.org>
Sat, 17 Oct 2009 23:52:50 +0000 (23:52 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Sat, 17 Oct 2009 23:52:50 +0000 (23:52 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84378 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Parse/ParseInit.cpp

index 6ab23fd42ddc54c311cd768fa0f372ca383bb4ad..71e9dee56135aa9239f542d938b6f40d220483a9 100644 (file)
@@ -15,6 +15,7 @@
 #include "clang/Parse/Parser.h"
 #include "clang/Parse/ParseDiagnostic.h"
 #include "llvm/ADT/SmallString.h"
+#include "llvm/Support/raw_ostream.h"
 using namespace clang;
 
 
@@ -65,9 +66,9 @@ Parser::OwningExprResult Parser::ParseInitializerWithPotentialDesignator() {
   if (Tok.is(tok::identifier)) {
     const IdentifierInfo *FieldName = Tok.getIdentifierInfo();
 
-    std::string NewSyntax(".");
-    NewSyntax += FieldName->getName();
-    NewSyntax += " = ";
+    llvm::SmallString<256> NewSyntax;
+    llvm::raw_svector_ostream(NewSyntax) << '.' << FieldName->getNameStr()
+                                         << " = ";
 
     SourceLocation NameLoc = ConsumeToken(); // Eat the identifier.
 
@@ -77,7 +78,7 @@ Parser::OwningExprResult Parser::ParseInitializerWithPotentialDesignator() {
     Diag(Tok, diag::ext_gnu_old_style_field_designator)
       << CodeModificationHint::CreateReplacement(SourceRange(NameLoc,
                                                              ColonLoc),
-                                                 NewSyntax);
+                                                 NewSyntax.str());
 
     Designation D;
     D.AddDesignator(Designator::getField(FieldName, SourceLocation(), NameLoc));