Fix wonky header
authorChris Lattner <sabre@nondot.org>
Fri, 2 Apr 2004 05:06:57 +0000 (05:06 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 2 Apr 2004 05:06:57 +0000 (05:06 +0000)
Address PR305: LLVM tools will happily spew bytecode onto your terminal

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

tools/opt/opt.cpp

index 35874b2ed7e0d63bec1b6a746e468a995203f986..582a5540e474d7413ff434ad693c085ccc8157a1 100644 (file)
@@ -1,4 +1,4 @@
-//===----------------------------------------------------------------------===//
+//===- opt.cpp - The LLVM Modular Optimizer -------------------------------===//
 // 
 //                     The LLVM Compiler Infrastructure
 //
@@ -6,7 +6,6 @@
 // the University of Illinois Open Source License. See LICENSE.TXT for details.
 // 
 //===----------------------------------------------------------------------===//
-// LLVM Modular Optimizer Utility: opt
 //
 // Optimizations may be specified an arbitrary number of times on the command
 // line, they are run in the order specified.
@@ -23,6 +22,7 @@
 #include "llvm/Target/TargetMachineImpls.h"
 #include "llvm/Support/PassNameParser.h"
 #include "Support/Signals.h"
+#include "Support/SystemUtils.h"
 #include <fstream>
 #include <memory>
 #include <algorithm>
@@ -114,6 +114,18 @@ int main(int argc, char **argv) {
     RemoveFileOnSignal(OutputFilename);
   }
 
+  // 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 (Out == &std::cout && isStandardOutAConsole() && !Force && !NoOutput) {
+    std::cerr << "WARNING: It looks like you're attempting to print out a "
+              << "bytecode file.  I'm\ngoing to pretend you didn't ask me to do"
+              << " this (for your own good).  If you\nREALLY want to taste LLVM"
+              << " bytecode first hand, you can force output with the\n'-f'"
+              << " option.\n\n";
+    NoOutput = true;
+  }
+
   // Create a PassManager to hold and optimize the collection of passes we are
   // about to build...
   //