Skip to content

Commit ccc0b66

Browse files
committed
[clang] Avoid 'raw_string_ostream::str' (NFC)
Since `raw_string_ostream` doesn't own the string buffer, it is desirable (in terms of memory safety) for users to directly reference the string buffer rather than use `raw_string_ostream::str()`. Work towards TODO item to remove `raw_string_ostream::str()`. p.s. also remove some unneeded/dead code.
1 parent db7db68 commit ccc0b66

File tree

4 files changed

+15
-19
lines changed

4 files changed

+15
-19
lines changed

clang/lib/AST/JSONNodeDumper.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ void JSONNodeDumper::Visit(const APValue &Value, QualType Ty) {
237237
std::string Str;
238238
llvm::raw_string_ostream OS(Str);
239239
Value.printPretty(OS, Ctx, Ty);
240-
JOS.attribute("value", OS.str());
240+
JOS.attribute("value", Str);
241241
}
242242

243243
void JSONNodeDumper::Visit(const ConceptReference *CR) {
@@ -802,7 +802,7 @@ void JSONNodeDumper::VisitTemplateSpecializationType(
802802
std::string Str;
803803
llvm::raw_string_ostream OS(Str);
804804
TST->getTemplateName().print(OS, PrintPolicy);
805-
JOS.attribute("templateName", OS.str());
805+
JOS.attribute("templateName", Str);
806806
}
807807

808808
void JSONNodeDumper::VisitInjectedClassNameType(
@@ -824,7 +824,7 @@ void JSONNodeDumper::VisitElaboratedType(const ElaboratedType *ET) {
824824
std::string Str;
825825
llvm::raw_string_ostream OS(Str);
826826
NNS->print(OS, PrintPolicy, /*ResolveTemplateArgs*/ true);
827-
JOS.attribute("qualifier", OS.str());
827+
JOS.attribute("qualifier", Str);
828828
}
829829
if (const TagDecl *TD = ET->getOwnedTagDecl())
830830
JOS.attribute("ownedTagDecl", createBareDeclRef(TD));
@@ -1246,7 +1246,7 @@ void JSONNodeDumper::VisitObjCMessageExpr(const ObjCMessageExpr *OME) {
12461246
llvm::raw_string_ostream OS(Str);
12471247

12481248
OME->getSelector().print(OS);
1249-
JOS.attribute("selector", OS.str());
1249+
JOS.attribute("selector", Str);
12501250

12511251
switch (OME->getReceiverKind()) {
12521252
case ObjCMessageExpr::Instance:
@@ -1277,7 +1277,7 @@ void JSONNodeDumper::VisitObjCBoxedExpr(const ObjCBoxedExpr *OBE) {
12771277
llvm::raw_string_ostream OS(Str);
12781278

12791279
MD->getSelector().print(OS);
1280-
JOS.attribute("selector", OS.str());
1280+
JOS.attribute("selector", Str);
12811281
}
12821282
}
12831283

@@ -1286,7 +1286,7 @@ void JSONNodeDumper::VisitObjCSelectorExpr(const ObjCSelectorExpr *OSE) {
12861286
llvm::raw_string_ostream OS(Str);
12871287

12881288
OSE->getSelector().print(OS);
1289-
JOS.attribute("selector", OS.str());
1289+
JOS.attribute("selector", Str);
12901290
}
12911291

12921292
void JSONNodeDumper::VisitObjCProtocolExpr(const ObjCProtocolExpr *OPE) {
@@ -1634,7 +1634,7 @@ void JSONNodeDumper::VisitStringLiteral(const StringLiteral *SL) {
16341634
std::string Buffer;
16351635
llvm::raw_string_ostream SS(Buffer);
16361636
SL->outputString(SS);
1637-
JOS.attribute("value", SS.str());
1637+
JOS.attribute("value", Buffer);
16381638
}
16391639
void JSONNodeDumper::VisitCXXBoolLiteralExpr(const CXXBoolLiteralExpr *BLE) {
16401640
JOS.attribute("value", BLE->getValue());

clang/lib/Driver/ToolChains/Darwin.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3029,7 +3029,7 @@ void Darwin::addClangCC1ASTargetOptions(
30293029
std::string Arg;
30303030
llvm::raw_string_ostream OS(Arg);
30313031
OS << "-target-sdk-version=" << V;
3032-
CC1ASArgs.push_back(Args.MakeArgString(OS.str()));
3032+
CC1ASArgs.push_back(Args.MakeArgString(Arg));
30333033
};
30343034

30353035
if (isTargetMacCatalyst()) {
@@ -3052,7 +3052,7 @@ void Darwin::addClangCC1ASTargetOptions(
30523052
std::string Arg;
30533053
llvm::raw_string_ostream OS(Arg);
30543054
OS << "-darwin-target-variant-sdk-version=" << SDKInfo->getVersion();
3055-
CC1ASArgs.push_back(Args.MakeArgString(OS.str()));
3055+
CC1ASArgs.push_back(Args.MakeArgString(Arg));
30563056
} else if (const auto *MacOStoMacCatalystMapping =
30573057
SDKInfo->getVersionMapping(
30583058
DarwinSDKInfo::OSEnvPair::macOStoMacCatalystPair())) {
@@ -3063,7 +3063,7 @@ void Darwin::addClangCC1ASTargetOptions(
30633063
std::string Arg;
30643064
llvm::raw_string_ostream OS(Arg);
30653065
OS << "-darwin-target-variant-sdk-version=" << *SDKVersion;
3066-
CC1ASArgs.push_back(Args.MakeArgString(OS.str()));
3066+
CC1ASArgs.push_back(Args.MakeArgString(Arg));
30673067
}
30683068
}
30693069
}

clang/lib/Frontend/Rewrite/RewriteModernObjC.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -273,10 +273,9 @@ namespace {
273273
std::string SStr;
274274
llvm::raw_string_ostream S(SStr);
275275
New->printPretty(S, nullptr, PrintingPolicy(LangOpts));
276-
const std::string &Str = S.str();
277276

278277
// If replacement succeeded or warning disabled return with no warning.
279-
if (!Rewrite.ReplaceText(SrcRange.getBegin(), Size, Str)) {
278+
if (!Rewrite.ReplaceText(SrcRange.getBegin(), Size, SStr)) {
280279
ReplacedNodes[Old] = New;
281280
return;
282281
}
@@ -2581,7 +2580,7 @@ Stmt *RewriteModernObjC::RewriteObjCStringLiteral(ObjCStringLiteral *Exp) {
25812580
std::string prettyBufS;
25822581
llvm::raw_string_ostream prettyBuf(prettyBufS);
25832582
Exp->getString()->printPretty(prettyBuf, nullptr, PrintingPolicy(LangOpts));
2584-
Preamble += prettyBuf.str();
2583+
Preamble += prettyBufS;
25852584
Preamble += ",";
25862585
Preamble += utostr(Exp->getString()->getByteLength()) + "};\n";
25872586

@@ -4414,7 +4413,7 @@ void RewriteModernObjC::SynthesizeBlockLiterals(SourceLocation FunLocStart,
44144413
llvm::raw_string_ostream constructorExprBuf(SStr);
44154414
GlobalConstructionExp->printPretty(constructorExprBuf, nullptr,
44164415
PrintingPolicy(LangOpts));
4417-
globalBuf += constructorExprBuf.str();
4416+
globalBuf += SStr;
44184417
globalBuf += ";\n";
44194418
InsertText(FunLocStart, globalBuf);
44204419
GlobalConstructionExp = nullptr;

clang/lib/Sema/SemaCodeComplete.cpp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2117,8 +2117,6 @@ static void AddOverrideResults(ResultBuilder &Results,
21172117
// Generates a new CodeCompletionResult by taking this function and
21182118
// converting it into an override declaration with only one chunk in the
21192119
// final CodeCompletionString as a TypedTextChunk.
2120-
std::string OverrideSignature;
2121-
llvm::raw_string_ostream OS(OverrideSignature);
21222120
CodeCompletionResult CCR(Method, 0);
21232121
PrintingPolicy Policy =
21242122
getCompletionPrintingPolicy(S.getASTContext(), S.getPreprocessor());
@@ -3186,7 +3184,6 @@ static void AddTemplateParameterChunks(
31863184
else if (const auto *TC = TTP->getTypeConstraint()) {
31873185
llvm::raw_string_ostream OS(PlaceholderStr);
31883186
TC->print(OS, Policy);
3189-
OS.flush();
31903187
} else
31913188
PlaceholderStr = "class";
31923189

@@ -4025,7 +4022,7 @@ CodeCompleteConsumer::OverloadCandidate::CreateSignatureString(
40254022
std::string Name;
40264023
llvm::raw_string_ostream OS(Name);
40274024
FDecl->getDeclName().print(OS, Policy);
4028-
Result.AddTextChunk(Result.getAllocator().CopyString(OS.str()));
4025+
Result.AddTextChunk(Result.getAllocator().CopyString(Name));
40294026
} else {
40304027
// Function without a declaration. Just give the return type.
40314028
Result.AddResultTypeChunk(Result.getAllocator().CopyString(
@@ -4343,7 +4340,7 @@ static void MaybeAddOverrideCalls(Sema &S, DeclContext *InContext,
43434340
std::string Str;
43444341
llvm::raw_string_ostream OS(Str);
43454342
NNS->print(OS, Policy);
4346-
Builder.AddTextChunk(Results.getAllocator().CopyString(OS.str()));
4343+
Builder.AddTextChunk(Results.getAllocator().CopyString(Str));
43474344
}
43484345
} else if (!InContext->Equals(Overridden->getDeclContext()))
43494346
continue;

0 commit comments

Comments
 (0)