OSDN Git Service

Add a raw_ostream version of CheckBitcodeOutputToConsole.
authorDan Gohman <gohman@apple.com>
Wed, 15 Jul 2009 17:04:50 +0000 (17:04 +0000)
committerDan Gohman <gohman@apple.com>
Wed, 15 Jul 2009 17:04:50 +0000 (17:04 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75796 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Support/SystemUtils.h
lib/Support/SystemUtils.cpp

index 9a33fa3..95124a0 100644 (file)
@@ -29,6 +29,16 @@ bool CheckBitcodeOutputToConsole(
   bool print_warning = true ///< Control whether warnings are printed
 );
 
+/// Determine if the raw_ostream provided is connected to the outs() and
+/// displayed or not (to a console window). If so, generate a warning message
+/// advising against display of bitcode and return true. Otherwise just return
+/// false
+/// @brief Check for output written to a console
+bool CheckBitcodeOutputToConsole(
+  raw_ostream* stream_to_check, ///< The stream to be checked
+  bool print_warning = true ///< Control whether warnings are printed
+);
+
 /// FindExecutable - Find a named executable, giving the argv[0] of program
 /// being executed. This allows us to find another LLVM tool if it is built into
 /// the same directory, but that directory is neither the current directory, nor
index c86e200..49a87e4 100644 (file)
 #include <ostream>
 using namespace llvm;
 
+bool llvm::CheckBitcodeOutputToConsole(raw_ostream* stream_to_check,
+                                       bool print_warning) {
+  if (stream_to_check == &outs() &&
+      sys::Process::StandardOutIsDisplayed()) {
+    if (print_warning) {
+      cerr << "WARNING: You're attempting to print out a bitcode file.\n"
+           << "This is inadvisable as it may cause display problems. If\n"
+           << "you REALLY want to taste LLVM bitcode first-hand, you\n"
+           << "can force output with the `-f' option.\n\n";
+    }
+    return true;
+  }
+  return false;
+}
+
 bool llvm::CheckBitcodeOutputToConsole(std::ostream* stream_to_check,
                                        bool print_warning) {
   if (stream_to_check == cout.stream() &&