summaryrefslogtreecommitdiffstats
path: root/contrib/llvm/tools/opt/GraphPrinters.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/llvm/tools/opt/GraphPrinters.cpp')
-rw-r--r--contrib/llvm/tools/opt/GraphPrinters.cpp40
1 files changed, 23 insertions, 17 deletions
diff --git a/contrib/llvm/tools/opt/GraphPrinters.cpp b/contrib/llvm/tools/opt/GraphPrinters.cpp
index e7c6d1e..9de7d6a 100644
--- a/contrib/llvm/tools/opt/GraphPrinters.cpp
+++ b/contrib/llvm/tools/opt/GraphPrinters.cpp
@@ -28,13 +28,19 @@ static void WriteGraphToFile(raw_ostream &O, const std::string &GraphName,
std::string Filename = GraphName + ".dot";
O << "Writing '" << Filename << "'...";
std::string ErrInfo;
- raw_fd_ostream F(Filename.c_str(), ErrInfo);
-
- if (ErrInfo.empty())
- WriteGraph(F, GT);
- else
- O << " error opening file for writing!";
- O << "\n";
+ tool_output_file F(Filename.c_str(), ErrInfo);
+
+ if (ErrInfo.empty()) {
+ WriteGraph(F.os(), GT);
+ F.os().close();
+ if (!F.os().has_error()) {
+ O << "\n";
+ F.keep();
+ return;
+ }
+ }
+ O << " error opening file for writing!\n";
+ F.os().clear_error();
}
@@ -65,7 +71,7 @@ namespace llvm {
namespace {
struct CallGraphPrinter : public ModulePass {
static char ID; // Pass ID, replacement for typeid
- CallGraphPrinter() : ModulePass(&ID) {}
+ CallGraphPrinter() : ModulePass(ID) {}
virtual bool runOnModule(Module &M) {
WriteGraphToFile(llvm::errs(), "callgraph", &getAnalysis<CallGraph>());
@@ -79,12 +85,12 @@ namespace {
AU.setPreservesAll();
}
};
-
- char CallGraphPrinter::ID = 0;
- RegisterPass<CallGraphPrinter> P2("dot-callgraph",
- "Print Call Graph to 'dot' file");
}
+char CallGraphPrinter::ID = 0;
+static RegisterPass<CallGraphPrinter> P2("dot-callgraph",
+ "Print Call Graph to 'dot' file");
+
//===----------------------------------------------------------------------===//
// DomInfoPrinter Pass
//===----------------------------------------------------------------------===//
@@ -93,7 +99,7 @@ namespace {
class DomInfoPrinter : public FunctionPass {
public:
static char ID; // Pass identification, replacement for typeid
- DomInfoPrinter() : FunctionPass(&ID) {}
+ DomInfoPrinter() : FunctionPass(ID) {}
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
AU.setPreservesAll();
@@ -110,8 +116,8 @@ namespace {
return false;
}
};
-
- char DomInfoPrinter::ID = 0;
- static RegisterPass<DomInfoPrinter>
- DIP("print-dom-info", "Dominator Info Printer", true, true);
}
+
+char DomInfoPrinter::ID = 0;
+static RegisterPass<DomInfoPrinter>
+DIP("print-dom-info", "Dominator Info Printer", true, true);
OpenPOWER on IntegriCloud