forked from OSchip/llvm-project
Patch by Csaba Hruska!
"Here is a patch what replaces std::ostream with llvm::raw_ostream. This patch covers the AST library, but ignores Analysis lib." llvm-svn: 56185
This commit is contained in:
parent
a5804effed
commit
2d470fc0ba
|
@ -24,6 +24,7 @@
|
|||
#include "llvm/Bitcode/ReaderWriter.h"
|
||||
#include "llvm/Support/Streams.h"
|
||||
#include "llvm/Support/Timer.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/ADT/OwningPtr.h"
|
||||
#include <fstream>
|
||||
|
||||
|
@ -35,10 +36,11 @@ using namespace clang;
|
|||
namespace {
|
||||
class DeclPrinter {
|
||||
public:
|
||||
std::ostream& Out;
|
||||
llvm::raw_ostream& Out;
|
||||
|
||||
DeclPrinter(std::ostream* out) : Out(out ? *out : *llvm::cerr.stream()) {}
|
||||
DeclPrinter() : Out(*llvm::cerr.stream()) {}
|
||||
DeclPrinter(llvm::raw_ostream* out) : Out(out ? *out : llvm::errs()) {}
|
||||
DeclPrinter() : Out(llvm::errs()) {}
|
||||
virtual ~DeclPrinter();
|
||||
|
||||
void PrintDecl(Decl *D);
|
||||
void PrintFunctionDeclStart(FunctionDecl *FD);
|
||||
|
@ -56,6 +58,10 @@ namespace {
|
|||
};
|
||||
} // end anonymous namespace
|
||||
|
||||
DeclPrinter::~DeclPrinter() {
|
||||
Out.flush();
|
||||
}
|
||||
|
||||
void DeclPrinter:: PrintDecl(Decl *D) {
|
||||
if (FunctionDecl *FD = dyn_cast<FunctionDecl>(D)) {
|
||||
PrintFunctionDeclStart(FD);
|
||||
|
@ -422,7 +428,7 @@ void DeclPrinter::PrintObjCPropertyImplDecl(ObjCPropertyImplDecl *PID) {
|
|||
namespace {
|
||||
class ASTPrinter : public ASTConsumer, public DeclPrinter {
|
||||
public:
|
||||
ASTPrinter(std::ostream* o = NULL) : DeclPrinter(o) {}
|
||||
ASTPrinter(llvm::raw_ostream* o = NULL) : DeclPrinter(o) {}
|
||||
|
||||
virtual void HandleTopLevelDecl(Decl *D) {
|
||||
PrintDecl(D);
|
||||
|
@ -430,7 +436,7 @@ namespace {
|
|||
};
|
||||
}
|
||||
|
||||
ASTConsumer *clang::CreateASTPrinter(std::ostream* out) {
|
||||
ASTConsumer *clang::CreateASTPrinter(llvm::raw_ostream* out) {
|
||||
return new ASTPrinter(out);
|
||||
}
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
#ifndef DRIVER_ASTCONSUMERS_H
|
||||
#define DRIVER_ASTCONSUMERS_H
|
||||
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include <string>
|
||||
#include <iosfwd>
|
||||
|
||||
|
@ -30,7 +31,7 @@ struct LangOptions;
|
|||
class Preprocessor;
|
||||
class PreprocessorFactory;
|
||||
|
||||
ASTConsumer *CreateASTPrinter(std::ostream* OS = NULL);
|
||||
ASTConsumer *CreateASTPrinter(llvm::raw_ostream* OS = NULL);
|
||||
|
||||
ASTConsumer *CreateASTDumper();
|
||||
|
||||
|
|
|
@ -17,8 +17,9 @@
|
|||
#include "clang/Lex/Preprocessor.h"
|
||||
#include "clang/Basic/SourceManager.h"
|
||||
#include "llvm/Support/Streams.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/System/Path.h"
|
||||
#include <fstream>
|
||||
#include "llvm/ADT/OwningPtr.h"
|
||||
using namespace clang;
|
||||
|
||||
/// isSameToken - Return true if the two specified tokens start have the same
|
||||
|
@ -205,20 +206,23 @@ void clang::RewriteMacrosInInput(Preprocessor &PP,const std::string &InFileName,
|
|||
}
|
||||
|
||||
// Create the output file.
|
||||
std::ostream *OutFile;
|
||||
llvm::OwningPtr<llvm::raw_ostream> OwnedStream;
|
||||
llvm::raw_ostream *OutFile;
|
||||
if (OutFileName == "-") {
|
||||
OutFile = llvm::cout.stream();
|
||||
OutFile = &llvm::outs();
|
||||
} else if (!OutFileName.empty()) {
|
||||
OutFile = new std::ofstream(OutFileName.c_str(),
|
||||
std::ios_base::binary|std::ios_base::out);
|
||||
std::string Err;
|
||||
OutFile = new llvm::raw_fd_ostream(OutFileName.c_str(), Err);
|
||||
OwnedStream.reset(OutFile);
|
||||
} else if (InFileName == "-") {
|
||||
OutFile = llvm::cout.stream();
|
||||
OutFile = &llvm::outs();
|
||||
} else {
|
||||
llvm::sys::Path Path(InFileName);
|
||||
Path.eraseSuffix();
|
||||
Path.appendSuffix("cpp");
|
||||
OutFile = new std::ofstream(Path.toString().c_str(),
|
||||
std::ios_base::binary|std::ios_base::out);
|
||||
std::string Err;
|
||||
OutFile = new llvm::raw_fd_ostream(Path.toString().c_str(), Err);
|
||||
OwnedStream.reset(OutFile);
|
||||
}
|
||||
|
||||
// Get the buffer corresponding to MainFileID. If we haven't changed it, then
|
||||
|
@ -230,4 +234,5 @@ void clang::RewriteMacrosInInput(Preprocessor &PP,const std::string &InFileName,
|
|||
} else {
|
||||
fprintf(stderr, "No changes\n");
|
||||
}
|
||||
OutFile->flush();
|
||||
}
|
||||
|
|
|
@ -22,12 +22,12 @@
|
|||
#include "clang/Lex/Lexer.h"
|
||||
#include "llvm/ADT/StringExtras.h"
|
||||
#include "llvm/ADT/SmallPtrSet.h"
|
||||
#include "llvm/ADT/OwningPtr.h"
|
||||
#include "llvm/Support/MemoryBuffer.h"
|
||||
#include "llvm/Support/CommandLine.h"
|
||||
#include "llvm/Support/Streams.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/System/Path.h"
|
||||
#include <sstream>
|
||||
#include <fstream>
|
||||
using namespace clang;
|
||||
using llvm::utostr;
|
||||
|
||||
|
@ -453,20 +453,23 @@ void RewriteObjC::HandleTranslationUnit(TranslationUnit& TU) {
|
|||
|
||||
// Create the output file.
|
||||
|
||||
std::ostream *OutFile;
|
||||
llvm::OwningPtr<llvm::raw_ostream> OwnedStream;
|
||||
llvm::raw_ostream *OutFile;
|
||||
if (OutFileName == "-") {
|
||||
OutFile = llvm::cout.stream();
|
||||
OutFile = &llvm::outs();
|
||||
} else if (!OutFileName.empty()) {
|
||||
OutFile = new std::ofstream(OutFileName.c_str(),
|
||||
std::ios_base::binary|std::ios_base::out);
|
||||
std::string Err;
|
||||
OutFile = new llvm::raw_fd_ostream(OutFileName.c_str(), Err);
|
||||
OwnedStream.reset(OutFile);
|
||||
} else if (InFileName == "-") {
|
||||
OutFile = llvm::cout.stream();
|
||||
OutFile = &llvm::outs();
|
||||
} else {
|
||||
llvm::sys::Path Path(InFileName);
|
||||
Path.eraseSuffix();
|
||||
Path.appendSuffix("cpp");
|
||||
OutFile = new std::ofstream(Path.toString().c_str(),
|
||||
std::ios_base::binary|std::ios_base::out);
|
||||
std::string Err;
|
||||
OutFile = new llvm::raw_fd_ostream(Path.toString().c_str(), Err);
|
||||
OwnedStream.reset(OutFile);
|
||||
}
|
||||
|
||||
RewriteInclude();
|
||||
|
@ -489,6 +492,7 @@ void RewriteObjC::HandleTranslationUnit(TranslationUnit& TU) {
|
|||
}
|
||||
// Emit metadata.
|
||||
*OutFile << ResultStr;
|
||||
OutFile->flush();
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
@ -1040,7 +1044,8 @@ Stmt *RewriteObjC::RewriteFunctionBodyOrGlobalInitializer(Stmt *S) {
|
|||
if (ImplicitCastExpr *ICE = dyn_cast<ImplicitCastExpr>(S)) {
|
||||
CastExpr *Replacement = new CastExpr(ICE->getType(), ICE->getSubExpr(), SourceLocation());
|
||||
// Get the new text.
|
||||
std::ostringstream Buf;
|
||||
std::string SStr;
|
||||
llvm::raw_string_ostream Buf(SStr);
|
||||
Replacement->printPretty(Buf);
|
||||
const std::string &Str = Buf.str();
|
||||
|
||||
|
@ -1333,7 +1338,8 @@ Stmt *RewriteObjC::RewriteObjCSynchronizedStmt(ObjCAtSynchronizedStmt *S) {
|
|||
buf += " objc_sync_exit(";
|
||||
Expr *syncExpr = new ExplicitCastExpr(Context->getObjCIdType(),
|
||||
S->getSynchExpr(), SourceLocation());
|
||||
std::ostringstream syncExprBuf;
|
||||
std::string syncExprBufS;
|
||||
llvm::raw_string_ostream syncExprBuf(syncExprBufS);
|
||||
syncExpr->printPretty(syncExprBuf);
|
||||
buf += syncExprBuf.str();
|
||||
buf += ");\n";
|
||||
|
@ -1942,7 +1948,8 @@ Stmt *RewriteObjC::RewriteObjCStringLiteral(ObjCStringLiteral *Exp) {
|
|||
Preamble += " __attribute__ ((section (\"__DATA, __cfstring\"))) = {__CFConstantStringClassReference,";
|
||||
Preamble += "0x000007c8,"; // utf8_str
|
||||
// The pretty printer for StringLiteral handles escape characters properly.
|
||||
std::ostringstream prettyBuf;
|
||||
std::string prettyBufS;
|
||||
llvm::raw_string_ostream prettyBuf(prettyBufS);
|
||||
Exp->getString()->printPretty(prettyBuf);
|
||||
Preamble += prettyBuf.str();
|
||||
Preamble += ",";
|
||||
|
|
|
@ -64,8 +64,9 @@ bool SerializationTest::Serialize(llvm::sys::Path& Filename,
|
|||
TranslationUnit& TU) {
|
||||
{
|
||||
// Pretty-print the decls to a temp file.
|
||||
std::ofstream DeclPP(FNameDeclPrint.c_str());
|
||||
assert (DeclPP && "Could not open file for printing out decls.");
|
||||
std::string Err;
|
||||
llvm::raw_fd_ostream DeclPP(FNameDeclPrint.c_str(), Err);
|
||||
assert (Err.empty() && "Could not open file for printing out decls.");
|
||||
llvm::OwningPtr<ASTConsumer> FilePrinter(CreateASTPrinter(&DeclPP));
|
||||
|
||||
for (TranslationUnit::iterator I=TU.begin(), E=TU.end(); I!=E; ++I)
|
||||
|
@ -87,8 +88,9 @@ bool SerializationTest::Deserialize(llvm::sys::Path& Filename,
|
|||
|
||||
{
|
||||
// Pretty-print the deserialized decls to a temp file.
|
||||
std::ofstream DeclPP(FNameDeclPrint.c_str());
|
||||
assert (DeclPP && "Could not open file for printing out decls.");
|
||||
std::string Err;
|
||||
llvm::raw_fd_ostream DeclPP(FNameDeclPrint.c_str(), Err);
|
||||
assert (Err.empty() && "Could not open file for printing out decls.");
|
||||
llvm::OwningPtr<ASTConsumer> FilePrinter(CreateASTPrinter(&DeclPP));
|
||||
|
||||
for (TranslationUnit::iterator I=NewTU->begin(), E=NewTU->end(); I!=E; ++I)
|
||||
|
|
|
@ -17,9 +17,9 @@
|
|||
|
||||
#include "llvm/ADT/GraphTraits.h"
|
||||
#include "llvm/Support/Allocator.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include <list>
|
||||
#include <vector>
|
||||
#include <iosfwd>
|
||||
#include <cassert>
|
||||
|
||||
namespace clang {
|
||||
|
@ -174,8 +174,8 @@ public:
|
|||
unsigned getBlockID() const { return BlockID; }
|
||||
|
||||
void dump(const CFG* cfg) const;
|
||||
void print(std::ostream& OS, const CFG* cfg) const;
|
||||
void printTerminator(std::ostream& OS) const;
|
||||
void print(llvm::raw_ostream& OS, const CFG* cfg) const;
|
||||
void printTerminator(llvm::raw_ostream& OS) const;
|
||||
};
|
||||
|
||||
|
||||
|
@ -276,7 +276,7 @@ public:
|
|||
//===--------------------------------------------------------------------===//
|
||||
|
||||
void viewCFG() const;
|
||||
void print(std::ostream& OS) const;
|
||||
void print(llvm::raw_ostream& OS) const;
|
||||
void dump() const;
|
||||
|
||||
//===--------------------------------------------------------------------===//
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
#ifndef LLVM_CLANG_AST_PRETTY_PRINTER_H
|
||||
#define LLVM_CLANG_AST_PRETTY_PRINTER_H
|
||||
|
||||
#include <iosfwd>
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
|
||||
namespace clang {
|
||||
|
||||
|
@ -23,7 +23,7 @@ class Stmt;
|
|||
class PrinterHelper {
|
||||
public:
|
||||
virtual ~PrinterHelper();
|
||||
virtual bool handledStmt(Stmt* E, std::ostream& OS) = 0;
|
||||
virtual bool handledStmt(Stmt* E, llvm::raw_ostream& OS) = 0;
|
||||
};
|
||||
|
||||
} // end namespace clang
|
||||
|
|
|
@ -15,12 +15,12 @@
|
|||
#define LLVM_CLANG_AST_STMT_H
|
||||
|
||||
#include "llvm/Support/Casting.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "clang/Basic/SourceLocation.h"
|
||||
#include "clang/AST/StmtIterator.h"
|
||||
#include "llvm/ADT/SmallVector.h"
|
||||
#include "llvm/ADT/iterator.h"
|
||||
#include "llvm/Bitcode/SerializationFwd.h"
|
||||
#include <iosfwd>
|
||||
#include <string>
|
||||
|
||||
using llvm::dyn_cast_or_null;
|
||||
|
@ -92,7 +92,7 @@ public:
|
|||
/// dumpPretty/printPretty - These two methods do a "pretty print" of the AST
|
||||
/// back to its original source language syntax.
|
||||
void dumpPretty() const;
|
||||
void printPretty(std::ostream &OS, PrinterHelper* = NULL) const;
|
||||
void printPretty(llvm::raw_ostream &OS, PrinterHelper* = NULL) const;
|
||||
|
||||
/// viewAST - Visualize an AST rooted at this Stmt* using GraphViz. Only
|
||||
/// works on systems with GraphViz (Mac OS X) or dot+gv installed.
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include "llvm/Support/Streams.h"
|
||||
#include "llvm/Support/Compiler.h"
|
||||
#include <llvm/Support/Allocator.h>
|
||||
#include <llvm/Support/Format.h>
|
||||
#include <iomanip>
|
||||
#include <algorithm>
|
||||
#include <sstream>
|
||||
|
@ -1306,7 +1307,7 @@ public:
|
|||
void setBlockID(signed i) { CurrentBlock = i; }
|
||||
void setStmtID(unsigned i) { CurrentStmt = i; }
|
||||
|
||||
virtual bool handledStmt(Stmt* Terminator, std::ostream& OS) {
|
||||
virtual bool handledStmt(Stmt* Terminator, llvm::raw_ostream& OS) {
|
||||
|
||||
StmtMapTy::iterator I = StmtMap.find(Terminator);
|
||||
|
||||
|
@ -1325,10 +1326,10 @@ public:
|
|||
class VISIBILITY_HIDDEN CFGBlockTerminatorPrint
|
||||
: public StmtVisitor<CFGBlockTerminatorPrint,void> {
|
||||
|
||||
std::ostream& OS;
|
||||
llvm::raw_ostream& OS;
|
||||
StmtPrinterHelper* Helper;
|
||||
public:
|
||||
CFGBlockTerminatorPrint(std::ostream& os, StmtPrinterHelper* helper)
|
||||
CFGBlockTerminatorPrint(llvm::raw_ostream& os, StmtPrinterHelper* helper)
|
||||
: OS(os), Helper(helper) {}
|
||||
|
||||
void VisitIfStmt(IfStmt* I) {
|
||||
|
@ -1406,7 +1407,7 @@ public:
|
|||
};
|
||||
|
||||
|
||||
void print_stmt(std::ostream&OS, StmtPrinterHelper* Helper, Stmt* Terminator) {
|
||||
void print_stmt(llvm::raw_ostream&OS, StmtPrinterHelper* Helper, Stmt* Terminator) {
|
||||
if (Helper) {
|
||||
// special printing for statement-expressions.
|
||||
if (StmtExpr* SE = dyn_cast<StmtExpr>(Terminator)) {
|
||||
|
@ -1437,7 +1438,7 @@ void print_stmt(std::ostream&OS, StmtPrinterHelper* Helper, Stmt* Terminator) {
|
|||
if (isa<Expr>(Terminator)) OS << '\n';
|
||||
}
|
||||
|
||||
void print_block(std::ostream& OS, const CFG* cfg, const CFGBlock& B,
|
||||
void print_block(llvm::raw_ostream& OS, const CFG* cfg, const CFGBlock& B,
|
||||
StmtPrinterHelper* Helper, bool print_edges) {
|
||||
|
||||
if (Helper) Helper->setBlockID(B.getBlockID());
|
||||
|
@ -1488,7 +1489,7 @@ void print_block(std::ostream& OS, const CFG* cfg, const CFGBlock& B,
|
|||
if (print_edges)
|
||||
OS << " ";
|
||||
|
||||
OS << std::setw(3) << j << ": ";
|
||||
OS << llvm::format("%3d", j) << ": ";
|
||||
|
||||
if (Helper)
|
||||
Helper->setStmtID(j);
|
||||
|
@ -1546,10 +1547,10 @@ void print_block(std::ostream& OS, const CFG* cfg, const CFGBlock& B,
|
|||
} // end anonymous namespace
|
||||
|
||||
/// dump - A simple pretty printer of a CFG that outputs to stderr.
|
||||
void CFG::dump() const { print(*llvm::cerr.stream()); }
|
||||
void CFG::dump() const { print(llvm::errs()); }
|
||||
|
||||
/// print - A simple pretty printer of a CFG that outputs to an ostream.
|
||||
void CFG::print(std::ostream& OS) const {
|
||||
void CFG::print(llvm::raw_ostream& OS) const {
|
||||
|
||||
StmtPrinterHelper Helper(this);
|
||||
|
||||
|
@ -1570,17 +1571,17 @@ void CFG::print(std::ostream& OS) const {
|
|||
}
|
||||
|
||||
/// dump - A simply pretty printer of a CFGBlock that outputs to stderr.
|
||||
void CFGBlock::dump(const CFG* cfg) const { print(*llvm::cerr.stream(), cfg); }
|
||||
void CFGBlock::dump(const CFG* cfg) const { print(llvm::errs(), cfg); }
|
||||
|
||||
/// print - A simple pretty printer of a CFGBlock that outputs to an ostream.
|
||||
/// Generally this will only be called from CFG::print.
|
||||
void CFGBlock::print(std::ostream& OS, const CFG* cfg) const {
|
||||
void CFGBlock::print(llvm::raw_ostream& OS, const CFG* cfg) const {
|
||||
StmtPrinterHelper Helper(cfg);
|
||||
print_block(OS, cfg, *this, &Helper, true);
|
||||
}
|
||||
|
||||
/// printTerminator - A simple pretty printer of the terminator of a CFGBlock.
|
||||
void CFGBlock::printTerminator(std::ostream& OS) const {
|
||||
void CFGBlock::printTerminator(llvm::raw_ostream& OS) const {
|
||||
CFGBlockTerminatorPrint TPrinter(OS,NULL);
|
||||
TPrinter.Visit(const_cast<Stmt*>(getTerminator()));
|
||||
}
|
||||
|
@ -1685,9 +1686,10 @@ struct DOTGraphTraits<const CFG*> : public DefaultDOTGraphTraits {
|
|||
static std::string getNodeLabel(const CFGBlock* Node, const CFG* Graph) {
|
||||
|
||||
#ifndef NDEBUG
|
||||
std::ostringstream Out;
|
||||
std::string OutSStr;
|
||||
llvm::raw_string_ostream Out(OutSStr);
|
||||
print_block(Out,Graph, *Node, GraphHelper, false);
|
||||
std::string OutStr = Out.str();
|
||||
std::string& OutStr = Out.str();
|
||||
|
||||
if (OutStr[0] == '\n') OutStr.erase(OutStr.begin());
|
||||
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
#include "clang/AST/PrettyPrinter.h"
|
||||
#include "llvm/Support/Compiler.h"
|
||||
#include "llvm/Support/Streams.h"
|
||||
#include "llvm/Support/Format.h"
|
||||
using namespace clang;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
@ -25,11 +26,11 @@ using namespace clang;
|
|||
|
||||
namespace {
|
||||
class VISIBILITY_HIDDEN StmtPrinter : public StmtVisitor<StmtPrinter> {
|
||||
std::ostream &OS;
|
||||
llvm::raw_ostream &OS;
|
||||
unsigned IndentLevel;
|
||||
clang::PrinterHelper* Helper;
|
||||
public:
|
||||
StmtPrinter(std::ostream &os, PrinterHelper* helper) :
|
||||
StmtPrinter(llvm::raw_ostream &os, PrinterHelper* helper) :
|
||||
OS(os), IndentLevel(0), Helper(helper) {}
|
||||
|
||||
void PrintStmt(Stmt *S, int SubIndent = 1) {
|
||||
|
@ -58,7 +59,7 @@ namespace {
|
|||
OS << "<null expr>";
|
||||
}
|
||||
|
||||
std::ostream &Indent(int Delta = 0) const {
|
||||
llvm::raw_ostream &Indent(int Delta = 0) const {
|
||||
for (int i = 0, e = IndentLevel+Delta; i < e; ++i)
|
||||
OS << " ";
|
||||
return OS;
|
||||
|
@ -547,7 +548,7 @@ void StmtPrinter::VisitCharacterLiteral(CharacterLiteral *Node) {
|
|||
if (value < 256 && isprint(value)) {
|
||||
OS << "'" << (char)value << "'";
|
||||
} else if (value < 256) {
|
||||
OS << "'\\x" << std::hex << value << std::dec << "'";
|
||||
OS << "'\\x" << llvm::format("%x", value) << "'";
|
||||
} else {
|
||||
// FIXME what to really do here?
|
||||
OS << value;
|
||||
|
@ -924,10 +925,10 @@ void StmtPrinter::VisitBlockDeclRefExpr(BlockDeclRefExpr *Node) {
|
|||
//===----------------------------------------------------------------------===//
|
||||
|
||||
void Stmt::dumpPretty() const {
|
||||
printPretty(*llvm::cerr.stream());
|
||||
printPretty(llvm::errs());
|
||||
}
|
||||
|
||||
void Stmt::printPretty(std::ostream &OS, PrinterHelper* Helper) const {
|
||||
void Stmt::printPretty(llvm::raw_ostream &OS, PrinterHelper* Helper) const {
|
||||
if (this == 0) {
|
||||
OS << "<NULL>";
|
||||
return;
|
||||
|
|
|
@ -33,7 +33,8 @@ struct DOTGraphTraits<const Stmt*> : public DefaultDOTGraphTraits {
|
|||
static std::string getNodeLabel(const Stmt* Node, const Stmt* Graph) {
|
||||
|
||||
#ifndef NDEBUG
|
||||
std::ostringstream Out;
|
||||
std::string OutSStr;
|
||||
llvm::raw_string_ostream Out(OutSStr);
|
||||
|
||||
if (Node)
|
||||
Out << Node->getStmtClassName();
|
||||
|
|
|
@ -910,7 +910,8 @@ void VariableArrayType::getAsStringInternal(std::string &S) const {
|
|||
S += '*';
|
||||
|
||||
if (getSizeExpr()) {
|
||||
std::ostringstream s;
|
||||
std::string SStr;
|
||||
llvm::raw_string_ostream s(SStr);
|
||||
getSizeExpr()->printPretty(s);
|
||||
S += s.str();
|
||||
}
|
||||
|
@ -937,7 +938,8 @@ void ExtVectorType::getAsStringInternal(std::string &S) const {
|
|||
void TypeOfExpr::getAsStringInternal(std::string &InnerString) const {
|
||||
if (!InnerString.empty()) // Prefix the basic type, e.g. 'typeof(e) X'.
|
||||
InnerString = ' ' + InnerString;
|
||||
std::ostringstream s;
|
||||
std::string Str;
|
||||
llvm::raw_string_ostream s(Str);
|
||||
getUnderlyingExpr()->printPretty(s);
|
||||
InnerString = "typeof(" + s.str() + ")" + InnerString;
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#include "llvm/Support/Streams.h"
|
||||
#include "llvm/ADT/ImmutableList.h"
|
||||
#include "llvm/Support/Compiler.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
|
||||
#ifndef NDEBUG
|
||||
#include "llvm/Support/GraphWriter.h"
|
||||
|
@ -2194,7 +2195,9 @@ struct VISIBILITY_HIDDEN DOTGraphTraits<GRExprEngine::NodeTy*> :
|
|||
SourceLocation SLoc = S->getLocStart();
|
||||
|
||||
Out << S->getStmtClassName() << ' ' << (void*) S << ' ';
|
||||
S->printPretty(Out);
|
||||
llvm::raw_os_ostream OutS(Out);
|
||||
S->printPretty(OutS);
|
||||
OutS.flush();
|
||||
|
||||
if (SLoc.isFileID()) {
|
||||
Out << "\\lline="
|
||||
|
@ -2237,7 +2240,9 @@ struct VISIBILITY_HIDDEN DOTGraphTraits<GRExprEngine::NodeTy*> :
|
|||
|
||||
Out << "\\|Terminator: ";
|
||||
|
||||
E.getSrc()->printTerminator(Out);
|
||||
llvm::raw_os_ostream OutS(Out);
|
||||
E.getSrc()->printTerminator(OutS);
|
||||
OutS.flush();
|
||||
|
||||
if (SLoc.isFileID()) {
|
||||
Out << "\\lline="
|
||||
|
@ -2251,11 +2256,14 @@ struct VISIBILITY_HIDDEN DOTGraphTraits<GRExprEngine::NodeTy*> :
|
|||
if (Label) {
|
||||
if (CaseStmt* C = dyn_cast<CaseStmt>(Label)) {
|
||||
Out << "\\lcase ";
|
||||
C->getLHS()->printPretty(Out);
|
||||
|
||||
llvm::raw_os_ostream OutS(Out);
|
||||
C->getLHS()->printPretty(OutS);
|
||||
OutS.flush();
|
||||
|
||||
if (Stmt* RHS = C->getRHS()) {
|
||||
Out << " .. ";
|
||||
RHS->printPretty(Out);
|
||||
RHS->printPretty(OutS);
|
||||
OutS.flush();
|
||||
}
|
||||
|
||||
Out << ":";
|
||||
|
|
|
@ -154,7 +154,9 @@ void GRState::print(std::ostream& Out, StoreManager& StoreMgr,
|
|||
else { Out << nl; }
|
||||
|
||||
Out << " (" << (void*) I.getKey() << ") ";
|
||||
I.getKey()->printPretty(Out);
|
||||
llvm::raw_os_ostream OutS(Out);
|
||||
I.getKey()->printPretty(OutS);
|
||||
OutS.flush();
|
||||
Out << " : ";
|
||||
I.getData().print(Out);
|
||||
}
|
||||
|
@ -171,7 +173,9 @@ void GRState::print(std::ostream& Out, StoreManager& StoreMgr,
|
|||
else { Out << nl; }
|
||||
|
||||
Out << " (" << (void*) I.getKey() << ") ";
|
||||
I.getKey()->printPretty(Out);
|
||||
llvm::raw_os_ostream OutS(Out);
|
||||
I.getKey()->printPretty(OutS);
|
||||
OutS.flush();
|
||||
Out << " : ";
|
||||
I.getData().print(Out);
|
||||
}
|
||||
|
|
|
@ -23,9 +23,9 @@
|
|||
#include "llvm/Support/Compiler.h"
|
||||
#include "llvm/Support/MemoryBuffer.h"
|
||||
#include "llvm/Support/Streams.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/System/Path.h"
|
||||
#include <fstream>
|
||||
#include <sstream>
|
||||
|
||||
using namespace clang;
|
||||
|
||||
|
@ -220,7 +220,8 @@ void HTMLDiagnostics::ReportDiag(const PathDiagnostic& D) {
|
|||
// Add the name of the file as an <h1> tag.
|
||||
|
||||
{
|
||||
std::ostringstream os;
|
||||
std::string s;
|
||||
llvm::raw_string_ostream os(s);
|
||||
|
||||
os << "<h3>Bug Summary</h3>\n<table class=\"simpletable\">\n"
|
||||
"<tr><td class=\"rowname\">File:</td><td>"
|
||||
|
@ -252,26 +253,30 @@ void HTMLDiagnostics::ReportDiag(const PathDiagnostic& D) {
|
|||
const std::string& BugDesc = D.getDescription();
|
||||
|
||||
if (!BugDesc.empty()) {
|
||||
std::ostringstream os;
|
||||
std::string s;
|
||||
llvm::raw_string_ostream os(s);
|
||||
os << "\n<!-- BUGDESC " << BugDesc << " -->\n";
|
||||
R.InsertStrBefore(SourceLocation::getFileLoc(FileID, 0), os.str());
|
||||
}
|
||||
|
||||
{
|
||||
std::ostringstream os;
|
||||
std::string s;
|
||||
llvm::raw_string_ostream os(s);
|
||||
os << "\n<!-- BUGFILE " << DirName << Entry->getName() << " -->\n";
|
||||
R.InsertStrBefore(SourceLocation::getFileLoc(FileID, 0), os.str());
|
||||
}
|
||||
|
||||
{
|
||||
std::ostringstream os;
|
||||
std::string s;
|
||||
llvm::raw_string_ostream os(s);
|
||||
os << "\n<!-- BUGLINE " << D.back()->getLocation().getLogicalLineNumber()
|
||||
<< " -->\n";
|
||||
R.InsertStrBefore(SourceLocation::getFileLoc(FileID, 0), os.str());
|
||||
}
|
||||
|
||||
{
|
||||
std::ostringstream os;
|
||||
std::string s;
|
||||
llvm::raw_string_ostream os(s);
|
||||
os << "\n<!-- BUGPATHLENGTH " << D.size() << " -->\n";
|
||||
R.InsertStrBefore(SourceLocation::getFileLoc(FileID, 0), os.str());
|
||||
}
|
||||
|
@ -365,7 +370,8 @@ void HTMLDiagnostics::HandlePiece(Rewriter& R, unsigned BugFileID,
|
|||
|
||||
// Create the html for the message.
|
||||
|
||||
std::ostringstream os;
|
||||
std::string s;
|
||||
llvm::raw_string_ostream os(s);
|
||||
|
||||
os << "\n<tr><td class=\"num\"></td><td class=\"line\">"
|
||||
<< "<div id=\"";
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
#include "llvm/ADT/SmallString.h"
|
||||
#include "llvm/ADT/OwningPtr.h"
|
||||
#include "llvm/Support/MemoryBuffer.h"
|
||||
#include <sstream>
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
using namespace clang;
|
||||
|
||||
|
||||
|
@ -161,7 +161,8 @@ std::string html::EscapeText(const std::string& s, bool EscapeSpaces,
|
|||
bool ReplaceTabs) {
|
||||
|
||||
unsigned len = s.size();
|
||||
std::ostringstream os;
|
||||
std::string Str;
|
||||
llvm::raw_string_ostream os(Str);
|
||||
|
||||
for (unsigned i = 0 ; i < len; ++i) {
|
||||
|
||||
|
@ -272,7 +273,8 @@ void html::AddHeaderFooterInternalBuiltinCSS(Rewriter& R, unsigned FileID,
|
|||
SourceLocation StartLoc = SourceLocation::getFileLoc(FileID, 0);
|
||||
SourceLocation EndLoc = SourceLocation::getFileLoc(FileID, FileEnd-FileStart);
|
||||
|
||||
std::ostringstream os;
|
||||
std::string s;
|
||||
llvm::raw_string_ostream os(s);
|
||||
os << "<!doctype html>\n" // Use HTML 5 doctype
|
||||
"<html>\n<head>\n";
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
#include "clang/AST/Stmt.h"
|
||||
#include "clang/Lex/Lexer.h"
|
||||
#include "clang/Basic/SourceManager.h"
|
||||
#include <sstream>
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
using namespace clang;
|
||||
|
||||
void RewriteBuffer::RemoveText(unsigned OrigOffset, unsigned Size) {
|
||||
|
@ -166,7 +166,8 @@ bool Rewriter::ReplaceStmt(Stmt *From, Stmt *To) {
|
|||
return true;
|
||||
|
||||
// Get the new text.
|
||||
std::ostringstream S;
|
||||
std::string SStr;
|
||||
llvm::raw_string_ostream S(SStr);
|
||||
To->printPretty(S);
|
||||
const std::string &Str = S.str();
|
||||
|
||||
|
|
Loading…
Reference in New Issue