diff --git a/clang/Driver/PrintParserCallbacks.cpp b/clang/Driver/PrintParserCallbacks.cpp
index d6f4d14..9c67f83 100644
--- a/clang/Driver/PrintParserCallbacks.cpp
+++ b/clang/Driver/PrintParserCallbacks.cpp
@@ -15,7 +15,7 @@
 #include "clang.h"
 #include "clang/Parse/Action.h"
 #include "clang/Parse/DeclSpec.h"
-#include <iostream>
+#include "llvm/Support/Streams.h"
 using namespace clang;
 
 namespace {
@@ -29,13 +29,13 @@
     /// "int X = 4" or "typedef int foo".
     virtual DeclTy *ActOnDeclarator(Scope *S, Declarator &D,
                                     DeclTy *LastInGroup) {
-      std::cout << "ActOnDeclarator ";
+      llvm::cout << "ActOnDeclarator ";
       if (IdentifierInfo *II = D.getIdentifier()) {
-        std::cout << "'" << II->getName() << "'";
+        llvm::cout << "'" << II->getName() << "'";
       } else {
-        std::cout << "<anon>";
+        llvm::cout << "<anon>";
       }
-      std::cout << "\n";
+      llvm::cout << "\n";
       
       // Pass up to EmptyActions so that the symbol table is maintained right.
       return MinimalAction::ActOnDeclarator(S, D, LastInGroup);
@@ -44,7 +44,7 @@
     /// ActOnPopScope - This callback is called immediately before the specified
     /// scope is popped and deleted.
     virtual void ActOnPopScope(SourceLocation Loc, Scope *S) {
-      std::cout << "ActOnPopScope\n";
+      llvm::cout << "ActOnPopScope\n";
       
       // Pass up to EmptyActions so that the symbol table is maintained right.
       MinimalAction::ActOnPopScope(Loc, S);
diff --git a/clang/Driver/TextDiagnosticPrinter.cpp b/clang/Driver/TextDiagnosticPrinter.cpp
index 16b348f..bd98b91 100644
--- a/clang/Driver/TextDiagnosticPrinter.cpp
+++ b/clang/Driver/TextDiagnosticPrinter.cpp
@@ -18,7 +18,7 @@
 #include "clang/Lex/Lexer.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/MemoryBuffer.h"
-#include <iostream>
+#include "llvm/Support/Streams.h"
 #include <string>
 using namespace clang;
 
@@ -40,8 +40,8 @@
   PrintIncludeStack(Pos.getIncludeLoc());
   unsigned LineNo = Pos.getLineNumber();
   
-  std::cerr << "In file included from " << Pos.getSourceName()
-            << ":" << LineNo << ":\n";
+  llvm::cerr << "In file included from " << Pos.getSourceName()
+             << ":" << LineNo << ":\n";
 }
 
 /// HighlightRange - Given a SourceRange and a line number, highlight (with ~'s)
@@ -141,23 +141,23 @@
            *LineEnd != '\n' && *LineEnd != '\r')
       ++LineEnd;
   
-    std::cerr << Buffer->getBufferIdentifier() 
-              << ":" << LineNo << ":";
+    llvm::cerr << Buffer->getBufferIdentifier() 
+               << ":" << LineNo << ":";
     if (ColNo && !NoShowColumn) 
-      std::cerr << ColNo << ":";
-    std::cerr << " ";
+      llvm::cerr << ColNo << ":";
+    llvm::cerr << " ";
   }
   
   switch (Level) {
   default: assert(0 && "Unknown diagnostic type!");
-  case Diagnostic::Note:    std::cerr << "note: "; break;
-  case Diagnostic::Warning: std::cerr << "warning: "; break;
-  case Diagnostic::Error:   std::cerr << "error: "; break;
-  case Diagnostic::Fatal:   std::cerr << "fatal error: "; break;
+  case Diagnostic::Note:    llvm::cerr << "note: "; break;
+  case Diagnostic::Warning: llvm::cerr << "warning: "; break;
+  case Diagnostic::Error:   llvm::cerr << "error: "; break;
+  case Diagnostic::Fatal:   llvm::cerr << "fatal error: "; break;
     break;
   }
   
-  std::cerr << FormatDiagnostic(Diags, Level, ID, Strs, NumStrs) << "\n";
+  llvm::cerr << FormatDiagnostic(Diags, Level, ID, Strs, NumStrs) << "\n";
   
   if (!NoCaretDiagnostics && Pos.isValid()) {
     // Get the line of the source file.
@@ -202,7 +202,7 @@
       CaratLine.erase(CaratLine.end()-1);
     
     // Emit what we have computed.
-    std::cerr << SourceLine << "\n";
-    std::cerr << CaratLine << "\n";
+    llvm::cerr << SourceLine << "\n";
+    llvm::cerr << CaratLine << "\n";
   }
 }
