Add slow path for single character write, and use exclusively for
single characters writes outside of the fast path in raw_ostream.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67053 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Support/raw_ostream.cpp b/lib/Support/raw_ostream.cpp
index 5a99a0c..43f4683 100644
--- a/lib/Support/raw_ostream.cpp
+++ b/lib/Support/raw_ostream.cpp
@@ -63,10 +63,7 @@
 
 raw_ostream &raw_ostream::operator<<(long N) {
   if (N <  0) {
-    if (OutBufCur >= OutBufEnd)
-      flush_impl();
-    *OutBufCur++ = '-';
-    
+    *this << '-';
     N = -N;
   }
   
@@ -91,10 +88,7 @@
 
 raw_ostream &raw_ostream::operator<<(long long N) {
   if (N <  0) {
-    if (OutBufCur >= OutBufEnd)
-      flush_impl();
-    *OutBufCur++ = '-';
-    
+    *this << '-';
     N = -N;
   }
   
@@ -106,6 +100,12 @@
   return *this << format("%p", P);
 }
 
+raw_ostream &raw_ostream::write(unsigned char C) {
+  if (OutBufCur >= OutBufEnd)
+    flush_impl();
+
+  *OutBufCur++ = C;
+}
 
 raw_ostream &raw_ostream::write(const char *Ptr, unsigned Size) {
   if (OutBufCur+Size > OutBufEnd)