summaryrefslogtreecommitdiff
path: root/tools/opt
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2010-09-01 14:20:41 +0000
committerDan Gohman <gohman@apple.com>2010-09-01 14:20:41 +0000
commitd4c454317a38d65957edebe62bfc69fc8d9885e8 (patch)
treedbf117519d428f04854447edee010962e68e5753 /tools/opt
parent41154114f64c1531764236e9268d2a5ac52e3e91 (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.cpp8
-rw-r--r--tools/opt/opt.cpp21
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.