PR3478: raw_ostream should not buffer stderr
 - Add unbuffered flag to raw_ostream, forwarded by raw_fd_ostream and
   used by raw_stderr_ostream.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66545 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Support/raw_ostream.cpp b/lib/Support/raw_ostream.cpp
index 29665dc..5a99a0c 100644
--- a/lib/Support/raw_ostream.cpp
+++ b/lib/Support/raw_ostream.cpp
@@ -141,6 +141,9 @@
     break;
   }
   OutBufCur += Size;
+
+  if (Unbuffered)
+    flush_impl();
   return *this;
 }
 
@@ -266,7 +269,8 @@
 //===----------------------------------------------------------------------===//
 
 raw_stdout_ostream::raw_stdout_ostream():raw_fd_ostream(STDOUT_FILENO, false) {}
-raw_stderr_ostream::raw_stderr_ostream():raw_fd_ostream(STDERR_FILENO, false) {}
+raw_stderr_ostream::raw_stderr_ostream():raw_fd_ostream(STDERR_FILENO, false, 
+                                                        true) {}
 
 // An out of line virtual method to provide a home for the class vtable.
 void raw_stdout_ostream::handle() {}