use raw_fd_ostream instead of fstream with graphwriter,
authorChris Lattner <sabre@nondot.org>
Sun, 23 Aug 2009 07:31:22 +0000 (07:31 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 23 Aug 2009 07:31:22 +0000 (07:31 +0000)
flush the right stream in opt.cpp.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79837 91177308-0d34-0410-b5e6-96231b3b80d8

tools/opt/GraphPrinters.cpp
tools/opt/opt.cpp

index 6bd0a6e9f760e3db3bba458107af8308b201beb8..c38469cc129b7bc5153fc58bba24fc76a8bd9d9b 100644 (file)
@@ -28,9 +28,10 @@ static void WriteGraphToFile(std::ostream &O, const std::string &GraphName,
                              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!";
index f41b20234906740bd8be297ed08db30193039b4d..ffe53d5dd1bfe35dc390e0835db830d88e115deb 100644 (file)
@@ -141,7 +141,7 @@ struct CallGraphSCCPassPrinter : public CallGraphSCCPass {
         if (F) {
           outs().flush();
           getAnalysisID<Pass>(PassToPrint).print(outs(), F->getParent());
-          cout << std::flush;
+          outs().flush();
         }
       }
     }
@@ -170,7 +170,7 @@ struct ModulePassPrinter : public ModulePass {
       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 @@ struct FunctionPassPrinter : public FunctionPass {
     // Get and print pass...
     outs().flush();
     getAnalysisID<Pass>(PassToPrint).print(outs(), F.getParent());
-    cout << std::flush;
+    outs().flush();
     return false;
   }
 
@@ -226,7 +226,7 @@ struct LoopPassPrinter : public LoopPass {
       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 @@ struct BasicBlockPassPrinter : public BasicBlockPass {
     // Get and print pass...
     outs().flush();
     getAnalysisID<Pass>(PassToPrint).print(outs(), BB.getParent()->getParent());
-    cout << std::flush;
+    outs().flush();
     return false;
   }