Don't create an output stream when output is disabled.
authorDan Gohman <gohman@apple.com>
Thu, 27 May 2010 19:52:20 +0000 (19:52 +0000)
committerDan Gohman <gohman@apple.com>
Thu, 27 May 2010 19:52:20 +0000 (19:52 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104875 91177308-0d34-0410-b5e6-96231b3b80d8

tools/opt/opt.cpp

index a29555ccf95070c3e04f4619721988a8634754e1..d094ed11de28ff5190f950cbdb11a8c80f45b600 100644 (file)
@@ -379,26 +379,28 @@ int main(int argc, char **argv) {
   // Figure out what stream we are supposed to write to...
   // FIXME: outs() is not binary!
   raw_ostream *Out = 0;
-  bool DeleteStream = true;
-  if (OutputFilename == "-") {
-    Out = &outs();  // Default to printing to stdout...
-    DeleteStream = false;
-  } else {
-    if (NoOutput || AnalyzeOnly) {
-      errs() << "WARNING: The -o (output filename) option is ignored when\n"
-                "the --disable-output or --analyze options are used.\n";
+  bool DeleteStream = false;
+  if (!NoOutput && !AnalyzeOnly) {
+    if (OutputFilename == "-") {
+      Out = &outs();  // Default to printing to stdout...
     } else {
-      // Make sure that the Output file gets unlinked from the disk if we get a
-      // SIGINT
-      sys::RemoveFileOnSignal(sys::Path(OutputFilename));
-
-      std::string ErrorInfo;
-      Out = new raw_fd_ostream(OutputFilename.c_str(), ErrorInfo,
-                               raw_fd_ostream::F_Binary);
-      if (!ErrorInfo.empty()) {
-        errs() << ErrorInfo << '\n';
-        delete Out;
-        return 1;
+      if (NoOutput || AnalyzeOnly) {
+        errs() << "WARNING: The -o (output filename) option is ignored when\n"
+                  "the --disable-output or --analyze options are used.\n";
+      } else {
+        // Make sure that the Output file gets unlinked from the disk if we get
+        // a SIGINT.
+        sys::RemoveFileOnSignal(sys::Path(OutputFilename));
+
+        std::string ErrorInfo;
+        Out = new raw_fd_ostream(OutputFilename.c_str(), ErrorInfo,
+                                 raw_fd_ostream::F_Binary);
+        if (!ErrorInfo.empty()) {
+          errs() << ErrorInfo << '\n';
+          delete Out;
+          return 1;
+        }
+        DeleteStream = true;
       }
     }
   }