diff --git a/llvm/lib/CodeGen/AsmPrinter.cpp b/llvm/lib/CodeGen/AsmPrinter.cpp
index 1b25b01..4caa2c1 100644
--- a/llvm/lib/CodeGen/AsmPrinter.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter.cpp
@@ -25,7 +25,6 @@
 #include "llvm/Target/TargetData.h"
 #include "llvm/Target/TargetLowering.h"
 #include "llvm/Target/TargetMachine.h"
-#include <ostream>
 #include <cerrno>
 using namespace llvm;
 
@@ -668,8 +667,8 @@
     if (LastMI != MI) { ++Counter; LastMI = MI; }
     O << Counter;
   } else {
-    llvm_cerr << "Unknown special formatter '" << Code
-              << "' for machine instr: " << *MI;
+    cerr << "Unknown special formatter '" << Code
+         << "' for machine instr: " << *MI;
     exit(1);
   }    
 }
@@ -737,8 +736,8 @@
       case '(':             // $( -> same as GCC's { character.
         ++LastEmitted;      // Consume '(' character.
         if (CurVariant != -1) {
-          llvm_cerr << "Nested variants found in inline asm string: '"
-                    << AsmStr << "'\n";
+          cerr << "Nested variants found in inline asm string: '"
+               << AsmStr << "'\n";
           exit(1);
         }
         CurVariant = 0;     // We're in the first variant now.
@@ -746,8 +745,8 @@
       case '|':
         ++LastEmitted;  // consume '|' character.
         if (CurVariant == -1) {
-          llvm_cerr << "Found '|' character outside of variant in inline asm "
-                    << "string: '" << AsmStr << "'\n";
+          cerr << "Found '|' character outside of variant in inline asm "
+               << "string: '" << AsmStr << "'\n";
           exit(1);
         }
         ++CurVariant;   // We're in the next variant.
@@ -755,8 +754,8 @@
       case ')':         // $) -> same as GCC's } char.
         ++LastEmitted;  // consume ')' character.
         if (CurVariant == -1) {
-          llvm_cerr << "Found '}' character outside of variant in inline asm "
-                    << "string: '" << AsmStr << "'\n";
+          cerr << "Found '}' character outside of variant in inline asm "
+               << "string: '" << AsmStr << "'\n";
           exit(1);
         }
         CurVariant = -1;
@@ -774,8 +773,8 @@
       char *IDEnd;
       long Val = strtol(IDStart, &IDEnd, 10); // We only accept numbers for IDs.
       if (!isdigit(*IDStart) || (Val == 0 && errno == EINVAL)) {
-        llvm_cerr << "Bad $ operand number in inline asm string: '" 
-                  << AsmStr << "'\n";
+        cerr << "Bad $ operand number in inline asm string: '" 
+             << AsmStr << "'\n";
         exit(1);
       }
       LastEmitted = IDEnd;
@@ -788,8 +787,8 @@
         if (*LastEmitted == ':') {
           ++LastEmitted;    // Consume ':' character.
           if (*LastEmitted == 0) {
-            llvm_cerr << "Bad ${:} expression in inline asm string: '" 
-                      << AsmStr << "'\n";
+            cerr << "Bad ${:} expression in inline asm string: '" 
+                 << AsmStr << "'\n";
             exit(1);
           }
           
@@ -798,16 +797,16 @@
         }
         
         if (*LastEmitted != '}') {
-          llvm_cerr << "Bad ${} expression in inline asm string: '" 
-                    << AsmStr << "'\n";
+          cerr << "Bad ${} expression in inline asm string: '" 
+               << AsmStr << "'\n";
           exit(1);
         }
         ++LastEmitted;    // Consume '}' character.
       }
       
       if ((unsigned)Val >= NumOperands-1) {
-        llvm_cerr << "Invalid $ operand number in inline asm string: '" 
-                  << AsmStr << "'\n";
+        cerr << "Invalid $ operand number in inline asm string: '" 
+             << AsmStr << "'\n";
         exit(1);
       }
       
@@ -841,8 +840,8 @@
           }
         }
         if (Error) {
-          llvm_cerr << "Invalid operand found in inline asm: '"
-                    << AsmStr << "'\n";
+          cerr << "Invalid operand found in inline asm: '"
+               << AsmStr << "'\n";
           MI->dump();
           exit(1);
         }
