An even better unbreakage...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32617 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/llvm/CodeGen/LiveInterval.h b/include/llvm/CodeGen/LiveInterval.h
index 8181a20..a64af87 100644
--- a/include/llvm/CodeGen/LiveInterval.h
+++ b/include/llvm/CodeGen/LiveInterval.h
@@ -26,7 +26,6 @@
 #include <iosfwd>
 #include <vector>
 #include <cassert>
-#include <ostream>
 
 namespace llvm {
   class MRegisterInfo;
@@ -63,10 +62,7 @@
   };
 
   std::ostream& operator<<(std::ostream& os, const LiveRange &LR);
-  inline OStream& operator<<(OStream& os, const LiveRange &LR) {
-    if (os.stream()) *os.stream() << LR;
-    return os;
-  }
+  OStream& operator<<(OStream& os, const LiveRange &LR);
 
   inline bool operator<(unsigned V, const LiveRange &LR) {
     return V < LR.start;
diff --git a/include/llvm/CodeGen/MachineBasicBlock.h b/include/llvm/CodeGen/MachineBasicBlock.h
index c848b06..4cf6a24 100644
--- a/include/llvm/CodeGen/MachineBasicBlock.h
+++ b/include/llvm/CodeGen/MachineBasicBlock.h
@@ -226,10 +226,7 @@
 };
 
 std::ostream& operator<<(std::ostream &OS, const MachineBasicBlock &MBB);
-inline OStream& operator<<(OStream &OS, const MachineBasicBlock &MBB){
-  if (OS.stream()) *OS.stream() << MBB;
-  return OS;
-}
+OStream& operator<<(OStream &OS, const MachineBasicBlock &MBB);
 
 //===--------------------------------------------------------------------===//
 // GraphTraits specializations for machine basic block graphs (machine-CFGs)
diff --git a/include/llvm/CodeGen/MachineInstr.h b/include/llvm/CodeGen/MachineInstr.h
index 181a641..e19a3eb 100644
--- a/include/llvm/CodeGen/MachineInstr.h
+++ b/include/llvm/CodeGen/MachineInstr.h
@@ -22,7 +22,6 @@
 #include <vector>
 #include <cassert>
 #include <iosfwd>
-#include <ostream>
 
 namespace llvm {
 
@@ -286,10 +285,7 @@
     IsDead = false;
   }
 
-  friend OStream& operator<<(OStream& os, const MachineOperand& mop) {
-    if (os.stream()) *os.stream() << mop;
-    return os;
-  }
+  friend OStream& operator<<(OStream& os, const MachineOperand& mop);
   friend std::ostream& operator<<(std::ostream& os, const MachineOperand& mop);
 
   friend class MachineInstr;
@@ -403,10 +399,7 @@
   }
   void print(std::ostream &OS, const TargetMachine *TM) const;
   void dump() const;
-  friend OStream& operator<<(OStream& os, const MachineInstr& minstr){
-    if (os.stream()) *os.stream() << minstr;
-    return os;
-  }
+  friend OStream& operator<<(OStream& os, const MachineInstr& minstr);
   friend std::ostream& operator<<(std::ostream& os, const MachineInstr& minstr);
 
   //===--------------------------------------------------------------------===//
diff --git a/lib/CodeGen/LiveInterval.cpp b/lib/CodeGen/LiveInterval.cpp
index e2a3bba..78c874c 100644
--- a/lib/CodeGen/LiveInterval.cpp
+++ b/lib/CodeGen/LiveInterval.cpp
@@ -24,6 +24,7 @@
 #include "llvm/Target/MRegisterInfo.h"
 #include <algorithm>
 #include <map>
+#include <ostream>
 using namespace llvm;
 
 // An example for liveAt():
@@ -509,3 +510,9 @@
 void LiveInterval::dump() const {
   cerr << *this << "\n";
 }
+
+
+OStream& llvm::operator<<(OStream& os, const LiveRange &LR) {
+  if (os.stream()) *os.stream() << LR;
+  return os;
+}
diff --git a/lib/CodeGen/MachineBasicBlock.cpp b/lib/CodeGen/MachineBasicBlock.cpp
index a626f4f..39b142a 100644
--- a/lib/CodeGen/MachineBasicBlock.cpp
+++ b/lib/CodeGen/MachineBasicBlock.cpp
@@ -31,6 +31,11 @@
   return OS;
 }
 
+OStream& llvm::operator<<(OStream &OS, const MachineBasicBlock &MBB) {
+  if (OS.stream()) *OS.stream() << MBB;
+  return OS;
+}
+
 // MBBs start out as #-1. When a MBB is added to a MachineFunction, it
 // gets the next available unique MBB number. If it is removed from a
 // MachineFunction, it goes back to being #-1.
diff --git a/lib/CodeGen/MachineInstr.cpp b/lib/CodeGen/MachineInstr.cpp
index 716b40f..a684425 100644
--- a/lib/CodeGen/MachineInstr.cpp
+++ b/lib/CodeGen/MachineInstr.cpp
@@ -18,6 +18,7 @@
 #include "llvm/Target/MRegisterInfo.h"
 #include "llvm/Support/LeakDetector.h"
 #include "llvm/Support/Streams.h"
+#include <ostream>
 using namespace llvm;
 
 /// MachineInstr ctor - This constructor creates a dummy MachineInstr with
@@ -363,3 +364,14 @@
 
   return OS;
 }
+
+OStream& llvm::operator<<(OStream& os, const MachineInstr& minstr) {
+  if (os.stream()) *os.stream() << minstr;
+  return os;
+}
+
+OStream& llvm::operator<<(OStream& os, const MachineOperand& mop) {
+  if (os.stream()) *os.stream() << mop;
+  return os;
+}
+