logan-5 updated this revision to Diff 392996.
logan-5 added a comment.
Eliminate some explicit `.flush()`es by using temporary `raw_string_ostream`s
where possible.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D115374/new/
https://reviews.llvm.org/D115374
Files:
clang/include/clang/StaticAnalyzer/Checkers/SValExplainer.h
clang/include/clang/Testing/TestClangConfig.h
clang/lib/AST/ASTDiagnostic.cpp
clang/lib/AST/AttrImpl.cpp
clang/lib/AST/Decl.cpp
clang/lib/AST/DeclarationName.cpp
clang/lib/AST/OpenMPClause.cpp
clang/lib/ASTMatchers/Dynamic/Diagnostics.cpp
clang/lib/Analysis/AnalysisDeclContext.cpp
clang/lib/Basic/SourceLocation.cpp
clang/lib/Basic/Version.cpp
clang/lib/Frontend/CompilerInvocation.cpp
clang/lib/Frontend/TestModuleFileExtension.cpp
clang/lib/Rewrite/HTMLRewrite.cpp
clang/lib/Sema/CodeCompleteConsumer.cpp
clang/lib/Sema/SemaAttr.cpp
clang/lib/StaticAnalyzer/Checkers/FuchsiaHandleChecker.cpp
clang/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp
clang/lib/StaticAnalyzer/Core/MemRegion.cpp
clang/lib/Tooling/Syntax/Tokens.cpp
clang/lib/Tooling/Syntax/Tree.cpp
clang/tools/clang-fuzzer/handle-llvm/handle_llvm.cpp
clang/unittests/AST/ASTTraverserTest.cpp
clang/unittests/Analysis/MacroExpansionContextTest.cpp
clang/unittests/Tooling/Syntax/TreeTest.cpp
Index: clang/unittests/Tooling/Syntax/TreeTest.cpp
===================================================================
--- clang/unittests/Tooling/Syntax/TreeTest.cpp
+++ clang/unittests/Tooling/Syntax/TreeTest.cpp
@@ -203,7 +203,8 @@
OS << "]";
- return OS.str();
+ OS.flush();
+ return Storage;
}
std::string dumpNodes(ArrayRef<Node *> Nodes) {
@@ -218,7 +219,8 @@
OS << "]";
- return OS.str();
+ OS.flush();
+ return Storage;
}
};
Index: clang/unittests/Analysis/MacroExpansionContextTest.cpp
===================================================================
--- clang/unittests/Analysis/MacroExpansionContextTest.cpp
+++ clang/unittests/Analysis/MacroExpansionContextTest.cpp
@@ -95,14 +95,16 @@
std::string Buf;
llvm::raw_string_ostream OS{Buf};
Ctx.dumpExpandedTextsToStream(OS);
- return OS.str();
+ OS.flush();
+ return Buf;
}
static std::string dumpExpansionRanges(const MacroExpansionContext &Ctx) {
std::string Buf;
llvm::raw_string_ostream OS{Buf};
Ctx.dumpExpansionRangesToStream(OS);
- return OS.str();
+ OS.flush();
+ return Buf;
}
};
Index: clang/unittests/AST/ASTTraverserTest.cpp
===================================================================
--- clang/unittests/AST/ASTTraverserTest.cpp
+++ clang/unittests/AST/ASTTraverserTest.cpp
@@ -111,7 +111,8 @@
Dumper.Visit(std::forward<NodeType &&>(N)...);
- return OS.str();
+ OS.flush();
+ return Buffer;
}
template <typename... NodeType>
@@ -126,7 +127,8 @@
Dumper.Visit(std::forward<NodeType &&>(N)...);
- return OS.str();
+ OS.flush();
+ return Buffer;
}
const FunctionDecl *getFunctionNode(clang::ASTUnit *AST,
Index: clang/tools/clang-fuzzer/handle-llvm/handle_llvm.cpp
===================================================================
--- clang/tools/clang-fuzzer/handle-llvm/handle_llvm.cpp
+++ clang/tools/clang-fuzzer/handle-llvm/handle_llvm.cpp
@@ -139,7 +139,8 @@
Passes.run(*M);
- return OS.str();
+ OS.flush();
+ return outString;
}
// Takes a function and runs it on a set of inputs
Index: clang/lib/Tooling/Syntax/Tree.cpp
===================================================================
--- clang/lib/Tooling/Syntax/Tree.cpp
+++ clang/lib/Tooling/Syntax/Tree.cpp
@@ -263,7 +263,8 @@
OS << " ";
}
});
- return OS.str();
+ OS.flush();
+ return Storage;
}
void syntax::Node::assertInvariants() const {
Index: clang/lib/Tooling/Syntax/Tokens.cpp
===================================================================
--- clang/lib/Tooling/Syntax/Tokens.cpp
+++ clang/lib/Tooling/Syntax/Tokens.cpp
@@ -927,5 +927,6 @@
M.EndExpanded);
}
}
- return OS.str();
+ OS.flush();
+ return Dump;
}
Index: clang/lib/StaticAnalyzer/Core/MemRegion.cpp
===================================================================
--- clang/lib/StaticAnalyzer/Core/MemRegion.cpp
+++ clang/lib/StaticAnalyzer/Core/MemRegion.cpp
@@ -444,7 +444,8 @@
std::string s;
llvm::raw_string_ostream os(s);
dumpToStream(os);
- return os.str();
+ os.flush();
+ return s;
}
void MemRegion::dumpToStream(raw_ostream &os) const {
Index: clang/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp
===================================================================
--- clang/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp
+++ clang/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp
@@ -437,7 +437,8 @@
for (auto BI : *Buf)
os << BI;
- return os.str();
+ os.flush();
+ return file;
}
void HTMLDiagnostics::dumpCoverageData(
@@ -534,7 +535,8 @@
</form>
)<<<";
- return os.str();
+ os.flush();
+ return s;
}
void HTMLDiagnostics::FinalizeHTML(const PathDiagnostic& D, Rewriter &R,
@@ -1200,9 +1202,9 @@
std::string getSpanBeginForControl(const char *ClassName, unsigned Index) {
std::string Result;
- llvm::raw_string_ostream OS(Result);
- OS << "<span id=\"" << ClassName << Index << "\">";
- return OS.str();
+ llvm::raw_string_ostream(Result)
+ << "<span id=\"" << ClassName << Index << "\">";
+ return Result;
}
std::string getSpanBeginForControlStart(unsigned Index) {
Index: clang/lib/StaticAnalyzer/Checkers/FuchsiaHandleChecker.cpp
===================================================================
--- clang/lib/StaticAnalyzer/Checkers/FuchsiaHandleChecker.cpp
+++ clang/lib/StaticAnalyzer/Checkers/FuchsiaHandleChecker.cpp
@@ -386,10 +386,10 @@
auto *PathBR = static_cast<PathSensitiveBugReport *>(&BR);
if (auto IsInteresting = PathBR->getInterestingnessKind(RetSym)) {
std::string SBuf;
- llvm::raw_string_ostream OS(SBuf);
- OS << "Function '" << FuncDecl->getDeclName()
- << "' returns an open handle";
- return OS.str();
+ llvm::raw_string_ostream(SBuf)
+ << "Function '" << FuncDecl->getDeclName()
+ << "' returns an open handle";
+ return SBuf;
} else
return "";
});
@@ -402,10 +402,10 @@
auto *PathBR = static_cast<PathSensitiveBugReport *>(&BR);
if (auto IsInteresting = PathBR->getInterestingnessKind(RetSym)) {
std::string SBuf;
- llvm::raw_string_ostream OS(SBuf);
- OS << "Function '" << FuncDecl->getDeclName()
- << "' returns an unowned handle";
- return OS.str();
+ llvm::raw_string_ostream(SBuf)
+ << "Function '" << FuncDecl->getDeclName()
+ << "' returns an unowned handle";
+ return SBuf;
} else
return "";
});
@@ -436,10 +436,10 @@
auto *PathBR = static_cast<PathSensitiveBugReport *>(&BR);
if (auto IsInteresting = PathBR->getInterestingnessKind(Handle)) {
std::string SBuf;
- llvm::raw_string_ostream OS(SBuf);
- OS << "Handle released through " << ParamDiagIdx
- << llvm::getOrdinalSuffix(ParamDiagIdx) << " parameter";
- return OS.str();
+ llvm::raw_string_ostream(SBuf)
+ << "Handle released through " << ParamDiagIdx
+ << llvm::getOrdinalSuffix(ParamDiagIdx) << " parameter";
+ return SBuf;
} else
return "";
});
@@ -450,10 +450,10 @@
auto *PathBR = static_cast<PathSensitiveBugReport *>(&BR);
if (auto IsInteresting = PathBR->getInterestingnessKind(Handle)) {
std::string SBuf;
- llvm::raw_string_ostream OS(SBuf);
- OS << "Handle allocated through " << ParamDiagIdx
- << llvm::getOrdinalSuffix(ParamDiagIdx) << " parameter";
- return OS.str();
+ llvm::raw_string_ostream(SBuf)
+ << "Handle allocated through " << ParamDiagIdx
+ << llvm::getOrdinalSuffix(ParamDiagIdx) << " parameter";
+ return SBuf;
} else
return "";
});
@@ -464,10 +464,10 @@
auto *PathBR = static_cast<PathSensitiveBugReport *>(&BR);
if (auto IsInteresting = PathBR->getInterestingnessKind(Handle)) {
std::string SBuf;
- llvm::raw_string_ostream OS(SBuf);
- OS << "Unowned handle allocated through " << ParamDiagIdx
- << llvm::getOrdinalSuffix(ParamDiagIdx) << " parameter";
- return OS.str();
+ llvm::raw_string_ostream(SBuf)
+ << "Unowned handle allocated through " << ParamDiagIdx
+ << llvm::getOrdinalSuffix(ParamDiagIdx) << " parameter";
+ return SBuf;
} else
return "";
});
Index: clang/lib/Sema/SemaAttr.cpp
===================================================================
--- clang/lib/Sema/SemaAttr.cpp
+++ clang/lib/Sema/SemaAttr.cpp
@@ -792,7 +792,8 @@
OS << (I.index() == Rules.size() - 1 ? ", and " : ", ");
OS << "'" << attr::getSubjectMatchRuleSpelling(I.value()) << "'";
}
- return OS.str();
+ OS.flush();
+ return Result;
}
} // end anonymous namespace
Index: clang/lib/Sema/CodeCompleteConsumer.cpp
===================================================================
--- clang/lib/Sema/CodeCompleteConsumer.cpp
+++ clang/lib/Sema/CodeCompleteConsumer.cpp
@@ -335,7 +335,8 @@
break;
}
}
- return OS.str();
+ OS.flush();
+ return Result;
}
const char *CodeCompletionString::getTypedText() const {
@@ -640,7 +641,8 @@
break;
}
}
- return OS.str();
+ OS.flush();
+ return Result;
}
void PrintingCodeCompleteConsumer::ProcessOverloadCandidates(
Index: clang/lib/Rewrite/HTMLRewrite.cpp
===================================================================
--- clang/lib/Rewrite/HTMLRewrite.cpp
+++ clang/lib/Rewrite/HTMLRewrite.cpp
@@ -202,8 +202,8 @@
case '&': os << "&"; break;
}
}
-
- return os.str();
+ os.flush();
+ return Str;
}
static void AddLineNumber(RewriteBuffer &RB, unsigned LineNo,
Index: clang/lib/Frontend/TestModuleFileExtension.cpp
===================================================================
--- clang/lib/Frontend/TestModuleFileExtension.cpp
+++ clang/lib/Frontend/TestModuleFileExtension.cpp
@@ -130,8 +130,8 @@
std::string TestModuleFileExtension::str() const {
std::string Buffer;
- llvm::raw_string_ostream OS(Buffer);
- OS << BlockName << ":" << MajorVersion << ":" << MinorVersion << ":" << Hashed
- << ":" << UserInfo;
- return OS.str();
+ llvm::raw_string_ostream(Buffer)
+ << BlockName << ":" << MajorVersion << ":" << MinorVersion << ":"
+ << Hashed << ":" << UserInfo;
+ return Buffer;
}
Index: clang/lib/Frontend/CompilerInvocation.cpp
===================================================================
--- clang/lib/Frontend/CompilerInvocation.cpp
+++ clang/lib/Frontend/CompilerInvocation.cpp
@@ -1285,7 +1285,8 @@
std::string Buffer;
llvm::raw_string_ostream OS(Buffer);
llvm::interleave(BundleParts, OS, [&OS](StringRef Part) { OS << Part; }, ",");
- return OS.str();
+ OS.flush();
+ return Buffer;
}
// Set the profile kind using fprofile-instrument-use-path.
Index: clang/lib/Basic/Version.cpp
===================================================================
--- clang/lib/Basic/Version.cpp
+++ clang/lib/Basic/Version.cpp
@@ -82,7 +82,8 @@
OS << LLVMRepo << ' ';
OS << LLVMRev << ')';
}
- return OS.str();
+ OS.flush();
+ return buf;
}
std::string getClangFullVersion() {
@@ -102,7 +103,8 @@
OS << " " << repo;
}
- return OS.str();
+ OS.flush();
+ return buf;
}
std::string getClangFullCPPVersion() {
@@ -120,7 +122,8 @@
OS << " " << repo;
}
- return OS.str();
+ OS.flush();
+ return buf;
}
} // end namespace clang
Index: clang/lib/Basic/SourceLocation.cpp
===================================================================
--- clang/lib/Basic/SourceLocation.cpp
+++ clang/lib/Basic/SourceLocation.cpp
@@ -90,7 +90,8 @@
std::string S;
llvm::raw_string_ostream OS(S);
print(OS, SM);
- return OS.str();
+ OS.flush();
+ return S;
}
LLVM_DUMP_METHOD void SourceLocation::dump(const SourceManager &SM) const {
@@ -149,7 +150,8 @@
std::string S;
llvm::raw_string_ostream OS(S);
print(OS, SM);
- return OS.str();
+ OS.flush();
+ return S;
}
//===----------------------------------------------------------------------===//
Index: clang/lib/Analysis/AnalysisDeclContext.cpp
===================================================================
--- clang/lib/Analysis/AnalysisDeclContext.cpp
+++ clang/lib/Analysis/AnalysisDeclContext.cpp
@@ -387,7 +387,8 @@
OS << ' ' << OMD->getSelector().getAsString() << ']';
}
- return OS.str();
+ OS.flush();
+ return Str;
}
LocationContextManager &AnalysisDeclContext::getLocationContextManager() {
Index: clang/lib/ASTMatchers/Dynamic/Diagnostics.cpp
===================================================================
--- clang/lib/ASTMatchers/Dynamic/Diagnostics.cpp
+++ clang/lib/ASTMatchers/Dynamic/Diagnostics.cpp
@@ -204,7 +204,8 @@
std::string S;
llvm::raw_string_ostream OS(S);
printToStream(OS);
- return OS.str();
+ OS.flush();
+ return S;
}
void Diagnostics::printToStreamFull(llvm::raw_ostream &OS) const {
@@ -223,7 +224,8 @@
std::string S;
llvm::raw_string_ostream OS(S);
printToStreamFull(OS);
- return OS.str();
+ OS.flush();
+ return S;
}
} // namespace dynamic
Index: clang/lib/AST/OpenMPClause.cpp
===================================================================
--- clang/lib/AST/OpenMPClause.cpp
+++ clang/lib/AST/OpenMPClause.cpp
@@ -2454,7 +2454,8 @@
Property.RawString);
}
}
- return OS.str();
+ OS.flush();
+ return MangledName;
}
OMPTraitInfo::OMPTraitInfo(StringRef MangledName) {
Index: clang/lib/AST/DeclarationName.cpp
===================================================================
--- clang/lib/AST/DeclarationName.cpp
+++ clang/lib/AST/DeclarationName.cpp
@@ -234,9 +234,8 @@
std::string DeclarationName::getAsString() const {
std::string Result;
- llvm::raw_string_ostream OS(Result);
- OS << *this;
- return OS.str();
+ llvm::raw_string_ostream(Result) << *this;
+ return Result;
}
void *DeclarationName::getFETokenInfoSlow() const {
@@ -458,9 +457,8 @@
std::string DeclarationNameInfo::getAsString() const {
std::string Result;
- llvm::raw_string_ostream OS(Result);
- OS << *this;
- return OS.str();
+ llvm::raw_string_ostream(Result) << *this;
+ return Result;
}
raw_ostream &clang::operator<<(raw_ostream &OS, DeclarationNameInfo DNInfo) {
Index: clang/lib/AST/Decl.cpp
===================================================================
--- clang/lib/AST/Decl.cpp
+++ clang/lib/AST/Decl.cpp
@@ -1589,7 +1589,8 @@
std::string QualName;
llvm::raw_string_ostream OS(QualName);
printQualifiedName(OS, getASTContext().getPrintingPolicy());
- return OS.str();
+ OS.flush();
+ return QualName;
}
void NamedDecl::printQualifiedName(raw_ostream &OS) const {
Index: clang/lib/AST/AttrImpl.cpp
===================================================================
--- clang/lib/AST/AttrImpl.cpp
+++ clang/lib/AST/AttrImpl.cpp
@@ -60,7 +60,8 @@
else
OS << "disable";
OS << ")";
- return OS.str();
+ OS.flush();
+ return ValueName;
}
// Return a string suitable for identifying this attribute in diagnostics.
Index: clang/lib/AST/ASTDiagnostic.cpp
===================================================================
--- clang/lib/AST/ASTDiagnostic.cpp
+++ clang/lib/AST/ASTDiagnostic.cpp
@@ -307,12 +307,12 @@
// type and element count.
if (const auto *VTy = Ty->getAs<VectorType>()) {
std::string DecoratedString;
- llvm::raw_string_ostream OS(DecoratedString);
const char *Values = VTy->getNumElements() > 1 ? "values" : "value";
- OS << "'" << S << "' (vector of " << VTy->getNumElements() << " '"
- << VTy->getElementType().getAsString(Context.getPrintingPolicy())
- << "' " << Values << ")";
- return OS.str();
+ llvm::raw_string_ostream(DecoratedString)
+ << "'" << S << "' (vector of " << VTy->getNumElements() << " '"
+ << VTy->getElementType().getAsString(Context.getPrintingPolicy())
+ << "' " << Values << ")";
+ return DecoratedString;
}
}
Index: clang/include/clang/Testing/TestClangConfig.h
===================================================================
--- clang/include/clang/Testing/TestClangConfig.h
+++ clang/include/clang/Testing/TestClangConfig.h
@@ -71,9 +71,9 @@
std::string toString() const {
std::string Result;
- llvm::raw_string_ostream OS(Result);
- OS << "{ Language=" << Language << ", Target=" << Target << " }";
- return OS.str();
+ llvm::raw_string_ostream(Result)
+ << "{ Language=" << Language << ", Target=" << Target << " }";
+ return Result;
}
friend std::ostream &operator<<(std::ostream &OS,
Index: clang/include/clang/StaticAnalyzer/Checkers/SValExplainer.h
===================================================================
--- clang/include/clang/StaticAnalyzer/Checkers/SValExplainer.h
+++ clang/include/clang/StaticAnalyzer/Checkers/SValExplainer.h
@@ -32,7 +32,8 @@
std::string Str;
llvm::raw_string_ostream OS(Str);
S->printPretty(OS, nullptr, PrintingPolicy(ACtx.getLangOpts()));
- return OS.str();
+ OS.flush();
+ return Str;
}
bool isThisObject(const SymbolicRegion *R) {
@@ -67,9 +68,8 @@
std::string VisitLocConcreteInt(loc::ConcreteInt V) {
const llvm::APSInt &I = V.getValue();
std::string Str;
- llvm::raw_string_ostream OS(Str);
- OS << "concrete memory address '" << I << "'";
- return OS.str();
+ llvm::raw_string_ostream(Str) << "concrete memory address '" << I << "'";
+ return Str;
}
std::string VisitNonLocSymbolVal(nonloc::SymbolVal V) {
@@ -79,10 +79,10 @@
std::string VisitNonLocConcreteInt(nonloc::ConcreteInt V) {
const llvm::APSInt &I = V.getValue();
std::string Str;
- llvm::raw_string_ostream OS(Str);
- OS << (I.isSigned() ? "signed " : "unsigned ") << I.getBitWidth()
- << "-bit integer '" << I << "'";
- return OS.str();
+ llvm::raw_string_ostream(Str)
+ << (I.isSigned() ? "signed " : "unsigned ") << I.getBitWidth()
+ << "-bit integer '" << I << "'";
+ return Str;
}
std::string VisitNonLocLazyCompoundVal(nonloc::LazyCompoundVal V) {
@@ -119,11 +119,11 @@
std::string VisitSymIntExpr(const SymIntExpr *S) {
std::string Str;
- llvm::raw_string_ostream OS(Str);
- OS << "(" << Visit(S->getLHS()) << ") "
- << std::string(BinaryOperator::getOpcodeStr(S->getOpcode())) << " "
- << S->getRHS();
- return OS.str();
+ llvm::raw_string_ostream(Str)
+ << "(" << Visit(S->getLHS()) << ") "
+ << std::string(BinaryOperator::getOpcodeStr(S->getOpcode())) << " "
+ << S->getRHS();
+ return Str;
}
// TODO: IntSymExpr doesn't appear in practice.
@@ -177,7 +177,8 @@
else
OS << "'" << Visit(R->getIndex()) << "'";
OS << " of " + Visit(R->getSuperRegion());
- return OS.str();
+ OS.flush();
+ return Str;
}
std::string VisitNonParamVarRegion(const NonParamVarRegion *R) {
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits