Added an automatic cast to "std::ostream*" etc. from OStream. We then can
rework the hacks that had us passing OStream in. We pass in std::ostream*
instead, check for null, and then dispatch to the correct print() method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32636 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Analysis/IPA/CallGraph.cpp b/lib/Analysis/IPA/CallGraph.cpp
index 6e8ca18..dcaeaf9 100644
--- a/lib/Analysis/IPA/CallGraph.cpp
+++ b/lib/Analysis/IPA/CallGraph.cpp
@@ -74,8 +74,8 @@
     AU.setPreservesAll();
   }
 
-  void print(OStream &o, const Module *M) const {
-    if (o.stream()) print(*o.stream(), M);
+  void print(std::ostream *o, const Module *M) const {
+    if (o) print(*o, M);
   }
 
   virtual void print(std::ostream &o, const Module *M) const {
diff --git a/lib/Analysis/Trace.cpp b/lib/Analysis/Trace.cpp
index a0aa955..3e3b1b9 100644
--- a/lib/Analysis/Trace.cpp
+++ b/lib/Analysis/Trace.cpp
@@ -31,13 +31,12 @@
 
 /// print - Write trace to output stream.
 ///
-void Trace::print(OStream &O) const {
+void Trace::print(std::ostream &O) const {
   Function *F = getFunction ();
   O << "; Trace from function " << F->getName() << ", blocks:\n";
   for (const_iterator i = begin(), e = end(); i != e; ++i) {
     O << "; ";
-    if (O.stream())
-      WriteAsOperand(*O.stream(), *i, true, getModule());
+    WriteAsOperand(O, *i, true, getModule());
     O << "\n";
   }
   O << "; Trace parent function: \n" << *F;