diff --git a/tools/gccas/gccas.cpp b/tools/gccas/gccas.cpp
index d7ce20b..8b06c32 100644
--- a/tools/gccas/gccas.cpp
+++ b/tools/gccas/gccas.cpp
@@ -21,6 +21,7 @@
 #include "Support/Signals.h"
 #include <memory>
 #include <fstream>
+using std::cerr;
 
 static cl::String InputFilename   ("", "Parse <arg> file, compile to bytecode",
                                    cl::Required, "");
@@ -64,7 +65,7 @@
 
   addPass(PM, createRaisePointerReferencesPass());// Eliminate casts
   addPass(PM, createPromoteMemoryToRegister());   // Promote alloca's to regs
-  addPass(PM, createReassociatePass());           // Reassociate expressions
+  /* addPass(PM, createReassociatePass());*/           // Reassociate expressions
   addPass(PM, createInstructionCombiningPass());  // Combine silly seq's
   addPass(PM, createDeadInstEliminationPass());   // Kill InstCombine remnants
   addPass(PM, createLICMPass());                  // Hoist loop invariants
@@ -87,7 +88,7 @@
     // Parse the file now...
     M.reset(ParseAssemblyFile(InputFilename));
   } catch (const ParseException &E) {
-    cerr << E.getMessage() << endl;
+    cerr << E.getMessage() << std::endl;
     return 1;
   }
 
@@ -107,7 +108,7 @@
     OutputFilename += ".o";
   }
 
-  std::ofstream Out(OutputFilename.c_str(), ios::out);
+  std::ofstream Out(OutputFilename.c_str(), std::ios::out);
   if (!Out.good()) {
     cerr << "Error opening " << OutputFilename << "!\n";
     return 1;
diff --git a/tools/gccld/gccld.cpp b/tools/gccld/gccld.cpp
index 0269999..5793b10 100644
--- a/tools/gccld/gccld.cpp
+++ b/tools/gccld/gccld.cpp
@@ -31,7 +31,7 @@
 #include <algorithm>
 #include <sys/types.h>     // For FileExists
 #include <sys/stat.h>
-
+using std::cerr;
 
 cl::StringList InputFilenames("", "Load <arg> files, linking them together", 
 			      cl::OneOrMore);
@@ -66,7 +66,7 @@
     if (Verbose) {
       cerr << "Error opening bytecode file: '" << Filename << "'";
       if (ErrorMessage.size()) cerr << ": " << ErrorMessage;
-      cerr << endl;
+      cerr << std::endl;
     }
     
     if (NextLibPathIdx == LibPaths.size()) break;
@@ -93,7 +93,7 @@
 
   if (!Libraries.empty()) {
     // Sort libraries list...
-    sort(Libraries.begin(), Libraries.end());
+    //sort(Libraries.begin(), Libraries.end());
 
     // Remove duplicate libraries entries...
     Libraries.erase(unique(Libraries.begin(), Libraries.end()),
diff --git a/tools/link/link.cpp b/tools/link/link.cpp
index 11000de..bc26b31 100644
--- a/tools/link/link.cpp
+++ b/tools/link/link.cpp
@@ -19,7 +19,9 @@
 #include <memory>
 #include <sys/types.h>     // For FileExists
 #include <sys/stat.h>
+#include <iostream>
 
+using std::cerr;
 
 cl::StringList InputFilenames("", "Load <arg> files, linking them together", 
 			      cl::OneOrMore);
@@ -106,7 +108,7 @@
 
   if (DumpAsm) cerr << "Here's the assembly:\n" << Composite.get();
 
-  ostream *Out = &cout;  // Default to printing to stdout...
+  std::ostream *Out = &std::cout;  // Default to printing to stdout...
   if (OutputFilename != "-") {
     if (!Force && std::ifstream(OutputFilename.c_str())) {
       // If force is not specified, make sure not to overwrite a file!
diff --git a/tools/llc/llc.cpp b/tools/llc/llc.cpp
index 1ef8144..4f98e55 100644
--- a/tools/llc/llc.cpp
+++ b/tools/llc/llc.cpp
@@ -22,6 +22,7 @@
 #include <memory>
 #include <fstream>
 using std::string;
+using std::cerr;
 
 static cl::String InputFilename ("", "Input filename", cl::NoFlags, "-");
 static cl::String OutputFilename("o", "Output filename", cl::NoFlags, "");
diff --git a/tools/llvm-link/llvm-link.cpp b/tools/llvm-link/llvm-link.cpp
index 11000de..bc26b31 100644
--- a/tools/llvm-link/llvm-link.cpp
+++ b/tools/llvm-link/llvm-link.cpp
@@ -19,7 +19,9 @@
 #include <memory>
 #include <sys/types.h>     // For FileExists
 #include <sys/stat.h>
+#include <iostream>
 
+using std::cerr;
 
 cl::StringList InputFilenames("", "Load <arg> files, linking them together", 
 			      cl::OneOrMore);
@@ -106,7 +108,7 @@
 
   if (DumpAsm) cerr << "Here's the assembly:\n" << Composite.get();
 
-  ostream *Out = &cout;  // Default to printing to stdout...
+  std::ostream *Out = &std::cout;  // Default to printing to stdout...
   if (OutputFilename != "-") {
     if (!Force && std::ifstream(OutputFilename.c_str())) {
       // If force is not specified, make sure not to overwrite a file!
