BugReporter: Use llvm::raw_string_stream instead of std::ostringstream.
llvm-svn: 64259
This commit is contained in:
parent
6abe6923e5
commit
a3d9025dd3
|
|
@ -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 @@ static inline Stmt* GetStmt(const ExplodedNode<GRState>* N) {
|
|||
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 @@ void GRBugReporter::GeneratePathDiagnostic(PathDiagnostic& PD,
|
|||
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 @@ void GRBugReporter::GeneratePathDiagnostic(PathDiagnostic& PD,
|
|||
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 @@ void GRBugReporter::GeneratePathDiagnostic(PathDiagnostic& PD,
|
|||
continue;
|
||||
}
|
||||
|
||||
llvm::raw_os_ostream OS(os);
|
||||
OS << V;
|
||||
}
|
||||
os << V;
|
||||
}
|
||||
|
||||
os << ":' at line "
|
||||
<< SMgr.getInstantiationLineNumber(S->getLocStart()) << ".\n";
|
||||
|
|
@ -684,15 +681,16 @@ void GRBugReporter::GeneratePathDiagnostic(PathDiagnostic& PD,
|
|||
|
||||
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 @@ void GRBugReporter::GeneratePathDiagnostic(PathDiagnostic& PD,
|
|||
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 @@ void GRBugReporter::GeneratePathDiagnostic(PathDiagnostic& PD,
|
|||
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 @@ void GRBugReporter::GeneratePathDiagnostic(PathDiagnostic& PD,
|
|||
break;
|
||||
}
|
||||
|
||||
case Stmt::IfStmtClass: {
|
||||
|
||||
case Stmt::IfStmtClass: {
|
||||
if (*(Src->succ_begin()+1) == Dst)
|
||||
PD.push_front(new PathDiagnosticPiece(L, "Taking false branch."));
|
||||
else
|
||||
|
|
|
|||
Loading…
Reference in New Issue