diff options
author | Dan Gohman <gohman@apple.com> | 2010-09-01 14:20:41 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2010-09-01 14:20:41 +0000 |
commit | d4c454317a38d65957edebe62bfc69fc8d9885e8 (patch) | |
tree | dbf117519d428f04854447edee010962e68e5753 /tools/opt | |
parent | 41154114f64c1531764236e9268d2a5ac52e3e91 (diff) |
Make tool_output_file's raw_ostream instance a member variable instead
of a base class.
This makes it possible to unregister the file from FilesToRemove when
the file is done. Also, this eliminates the need for
formatted_tool_output_file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112706 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/opt')
-rw-r--r-- | tools/opt/GraphPrinters.cpp | 8 | ||||
-rw-r--r-- | tools/opt/opt.cpp | 21 |
2 files changed, 17 insertions, 12 deletions
diff --git a/tools/opt/GraphPrinters.cpp b/tools/opt/GraphPrinters.cpp index d689a4a1dae..9de7d6ac545 100644 --- a/tools/opt/GraphPrinters.cpp +++ b/tools/opt/GraphPrinters.cpp @@ -31,16 +31,16 @@ static void WriteGraphToFile(raw_ostream &O, const std::string &GraphName, tool_output_file F(Filename.c_str(), ErrInfo); if (ErrInfo.empty()) { - WriteGraph(F, GT); - F.close(); - if (!F.has_error()) { + WriteGraph(F.os(), GT); + F.os().close(); + if (!F.os().has_error()) { O << "\n"; F.keep(); return; } } - F.clear_error(); O << " error opening file for writing!\n"; + F.os().clear_error(); } diff --git a/tools/opt/opt.cpp b/tools/opt/opt.cpp index f4ca38fb1ac..d8371851791 100644 --- a/tools/opt/opt.cpp +++ b/tools/opt/opt.cpp @@ -359,6 +359,11 @@ void AddStandardLinkPasses(PassManagerBase &PM) { int main(int argc, char **argv) { sys::PrintStackTraceOnErrorSignal(); llvm::PrettyStackTraceProgram X(argc, argv); + + if (AnalyzeOnly && NoOutput) { + errs() << argv[0] << ": analyze mode conflicts with no-output mode.\n"; + return 1; + } // Enable debug stream buffering. EnableDebugBuffering = true; @@ -408,7 +413,7 @@ int main(int argc, char **argv) { // console, print out a warning message and refuse to do it. We don't // impress anyone by spewing tons of binary goo to a terminal. if (!Force && !NoOutput && !AnalyzeOnly && !OutputAssembly) - if (CheckBitcodeOutputToConsole(*Out, !Quiet)) + if (CheckBitcodeOutputToConsole(Out->os(), !Quiet)) NoOutput = true; // Create a PassManager to hold and optimize the collection of passes we are @@ -484,19 +489,19 @@ int main(int argc, char **argv) { if (AnalyzeOnly) { switch (Kind) { case PT_BasicBlock: - Passes.add(new BasicBlockPassPrinter(PassInf, *Out)); + Passes.add(new BasicBlockPassPrinter(PassInf, Out->os())); break; case PT_Loop: - Passes.add(new LoopPassPrinter(PassInf, *Out)); + Passes.add(new LoopPassPrinter(PassInf, Out->os())); break; case PT_Function: - Passes.add(new FunctionPassPrinter(PassInf, *Out)); + Passes.add(new FunctionPassPrinter(PassInf, Out->os())); break; case PT_CallGraphSCC: - Passes.add(new CallGraphSCCPassPrinter(PassInf, *Out)); + Passes.add(new CallGraphSCCPassPrinter(PassInf, Out->os())); break; default: - Passes.add(new ModulePassPrinter(PassInf, *Out)); + Passes.add(new ModulePassPrinter(PassInf, Out->os())); break; } } @@ -536,9 +541,9 @@ int main(int argc, char **argv) { // Write bitcode or assembly to the output as the last step... if (!NoOutput && !AnalyzeOnly) { if (OutputAssembly) - Passes.add(createPrintModulePass(Out.get())); + Passes.add(createPrintModulePass(&Out->os())); else - Passes.add(createBitcodeWriterPass(*Out)); + Passes.add(createBitcodeWriterPass(Out->os())); } // Now that we have all of the passes ready, run them. |