use raw_fd_ostream instead of fstream with graphwriter,
flush the right stream in opt.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79837 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/tools/opt/GraphPrinters.cpp b/tools/opt/GraphPrinters.cpp
index 6bd0a6e..c38469c 100644
--- a/tools/opt/GraphPrinters.cpp
+++ b/tools/opt/GraphPrinters.cpp
@@ -28,9 +28,10 @@
                              const GraphType &GT) {
   std::string Filename = GraphName + ".dot";
   O << "Writing '" << Filename << "'...";
-  std::ofstream F(Filename.c_str());
+  std::string ErrInfo;
+  raw_fd_ostream F(Filename.c_str(), ErrInfo, raw_fd_ostream::F_Force);
 
-  if (F.good())
+  if (ErrInfo.empty())
     WriteGraph(F, GT);
   else
     O << "  error opening file for writing!";
diff --git a/tools/opt/opt.cpp b/tools/opt/opt.cpp
index f41b202..ffe53d5 100644
--- a/tools/opt/opt.cpp
+++ b/tools/opt/opt.cpp
@@ -141,7 +141,7 @@
         if (F) {
           outs().flush();
           getAnalysisID<Pass>(PassToPrint).print(outs(), F->getParent());
-          cout << std::flush;
+          outs().flush();
         }
       }
     }
@@ -170,7 +170,7 @@
       outs() << "Printing analysis '" << PassToPrint->getPassName() << "':\n";
       outs().flush();
       getAnalysisID<Pass>(PassToPrint).print(outs(), &M);
-      cout << std::flush;
+      outs().flush();
     }
 
     // Get and print pass...
@@ -200,7 +200,7 @@
     // Get and print pass...
     outs().flush();
     getAnalysisID<Pass>(PassToPrint).print(outs(), F.getParent());
-    cout << std::flush;
+    outs().flush();
     return false;
   }
 
@@ -226,7 +226,7 @@
       outs().flush();
       getAnalysisID<Pass>(PassToPrint).print(outs(),
                                   L->getHeader()->getParent()->getParent());
-      cout << std::flush;
+      outs().flush();
     }
     // Get and print pass...
     return false;
@@ -257,7 +257,7 @@
     // Get and print pass...
     outs().flush();
     getAnalysisID<Pass>(PassToPrint).print(outs(), BB.getParent()->getParent());
-    cout << std::flush;
+    outs().flush();
     return false;
   }