BugReporter: Use llvm::raw_string_stream instead of std::ostringstream.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64259 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Analysis/BugReporter.cpp b/lib/Analysis/BugReporter.cpp
index 7a49112..cf1d1b7 100644
--- a/lib/Analysis/BugReporter.cpp
+++ b/lib/Analysis/BugReporter.cpp
@@ -24,7 +24,6 @@
#include "llvm/Support/raw_ostream.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/STLExtras.h"
-#include <sstream>
using namespace clang;
@@ -75,27 +74,26 @@
return isa<BlockEntrance>(ProgP) ? GetLastStmt(N) : GetStmt(ProgP);
}
-static void ExecutionContinues(std::ostringstream& os, SourceManager& SMgr,
- const Stmt* S) {
-
+static void ExecutionContinues(llvm::raw_string_ostream& os,
+ SourceManager& SMgr,
+ const Stmt* S) {
if (!S)
return;
// Slow, but probably doesn't matter.
- if (os.str().empty())
- os << ' ';
+ if (os.str().empty()) os << ' ';
os << "Execution continues on line "
- << SMgr.getInstantiationLineNumber(S->getLocStart()) << '.';
+ << SMgr.getInstantiationLineNumber(S->getLocStart()) << '.';
}
-static inline void ExecutionContinues(std::ostringstream& os,
+static inline void ExecutionContinues(llvm::raw_string_ostream& os,
SourceManager& SMgr,
const ExplodedNode<GRState>* N) {
ExecutionContinues(os, SMgr, GetStmt(N->getLocation()));
}
-static inline void ExecutionContinues(std::ostringstream& os,
+static inline void ExecutionContinues(llvm::raw_string_ostream& os,
SourceManager& SMgr,
const CFGBlock* B) {
ExecutionContinues(os, SMgr, GetStmt(B));
@@ -603,7 +601,8 @@
if (!S)
continue;
- std::ostringstream os;
+ std::string sbuf;
+ llvm::raw_string_ostream os(sbuf);
os << "Control jumps to line "
<< SMgr.getInstantiationLineNumber(S->getLocStart()) << ".\n";
@@ -612,11 +611,10 @@
break;
}
- case Stmt::SwitchStmtClass: {
-
+ case Stmt::SwitchStmtClass: {
// Figure out what case arm we took.
-
- std::ostringstream os;
+ std::string sbuf;
+ llvm::raw_string_ostream os(sbuf);
if (Stmt* S = Dst->getLabel())
switch (S->getStmtClass()) {
@@ -663,9 +661,8 @@
continue;
}
- llvm::raw_os_ostream OS(os);
- OS << V;
- }
+ os << V;
+ }
os << ":' at line "
<< SMgr.getInstantiationLineNumber(S->getLocStart()) << ".\n";
@@ -684,15 +681,16 @@
case Stmt::BreakStmtClass:
case Stmt::ContinueStmtClass: {
- std::ostringstream os;
+ std::string sbuf;
+ llvm::raw_string_ostream os(sbuf);
ExecutionContinues(os, SMgr, LastNode);
PD.push_front(new PathDiagnosticPiece(L, os.str()));
break;
}
case Stmt::ConditionalOperatorClass: {
-
- std::ostringstream os;
+ std::string sbuf;
+ llvm::raw_string_ostream os(sbuf);
os << "'?' condition evaluates to ";
if (*(Src->succ_begin()+1) == Dst)
@@ -700,16 +698,15 @@
else
os << "true.";
- PD.push_front(new PathDiagnosticPiece(L, os.str()));
-
+ PD.push_front(new PathDiagnosticPiece(L, os.str()));
break;
}
case Stmt::DoStmtClass: {
if (*(Src->succ_begin()) == Dst) {
-
- std::ostringstream os;
+ std::string sbuf;
+ llvm::raw_string_ostream os(sbuf);
os << "Loop condition is true. ";
ExecutionContinues(os, SMgr, Dst);
@@ -727,12 +724,12 @@
case Stmt::ForStmtClass: {
if (*(Src->succ_begin()+1) == Dst) {
-
- std::ostringstream os;
+ std::string sbuf;
+ llvm::raw_string_ostream os(sbuf);
os << "Loop condition is false. ";
ExecutionContinues(os, SMgr, Dst);
-
+
PD.push_front(new PathDiagnosticPiece(L, os.str()));
}
else
@@ -742,8 +739,7 @@
break;
}
- case Stmt::IfStmtClass: {
-
+ case Stmt::IfStmtClass: {
if (*(Src->succ_begin()+1) == Dst)
PD.push_front(new PathDiagnosticPiece(L, "Taking false branch."));
else