Don't create a (empty) output file, and don't warn about bitcode output
authorDan Gohman <gohman@apple.com>
Sun, 17 Jan 2010 17:47:24 +0000 (17:47 +0000)
committerDan Gohman <gohman@apple.com>
Sun, 17 Jan 2010 17:47:24 +0000 (17:47 +0000)
to a console, when --analyze is used.

Similarly, avoid creating an empty output file when --disable-output is used.

Print a warning when the -o option appears with either --analyze or
--disable-output, to indicate that the option is being ignored.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93685 91177308-0d34-0410-b5e6-96231b3b80d8

tools/opt/opt.cpp

index a636bd9b04f41406e14f9ef1cedf451e93d6f966..a4ad9ab571ffc2c3133652c13ddf29b72d2b6137 100644 (file)
@@ -373,24 +373,29 @@ int main(int argc, char **argv) {
   // FIXME: outs() is not binary!
   raw_ostream *Out = &outs();  // Default to printing to stdout...
   if (OutputFilename != "-") {
-    // 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;
+      }
     }
   }
 
   // If the output is set to be emitted to standard out, and standard out is a
   // 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 && !OutputAssembly)
+  if (!Force && !NoOutput && !AnalyzeOnly && !OutputAssembly)
     if (CheckBitcodeOutputToConsole(*Out, !Quiet))
       NoOutput = true;
 
@@ -517,7 +522,7 @@ int main(int argc, char **argv) {
   if (!NoVerify && !VerifyEach)
     Passes.add(createVerifierPass());
 
-  // Write bitcode or assembly  out to disk or outs() as the last step...
+  // Write bitcode or assembly out to disk or outs() as the last step...
   if (!NoOutput && !AnalyzeOnly) {
     if (OutputAssembly)
       Passes.add(createPrintModulePass(Out));