simplify output file selection, fixing two FIXMEs about binary output


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79808 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/tools/llvm-extract/llvm-extract.cpp b/tools/llvm-extract/llvm-extract.cpp
index 16e039b..4ea9dd8 100644
--- a/tools/llvm-extract/llvm-extract.cpp
+++ b/tools/llvm-extract/llvm-extract.cpp
@@ -110,29 +110,20 @@
   Passes.add(createDeadTypeEliminationPass());   // Remove dead types...
   Passes.add(createStripDeadPrototypesPass());   // Remove dead func decls
 
-  raw_ostream *Out = 0;
-
-  if (OutputFilename != "-") {  // Not stdout?
-    std::string ErrorInfo;
-    Out = new raw_fd_ostream(OutputFilename.c_str(), ErrorInfo,
-                             raw_fd_ostream::F_Binary |
-                             (Force ? raw_fd_ostream::F_Force : 0));
-    if (!ErrorInfo.empty()) {
-      errs() << ErrorInfo << '\n';
-      if (!Force)
-        errs() << "Use -f command line argument to force output\n";
-      delete Out;
-      return 1;
-    }
-  } else {                      // Specified stdout
-    // FIXME: outs() is not binary!
-    Out = &outs();
+  std::string ErrorInfo;
+  std::auto_ptr<raw_fd_ostream>
+  Out(new raw_fd_ostream(OutputFilename.c_str(), ErrorInfo,
+                         raw_fd_ostream::F_Binary |
+                         (Force ? raw_fd_ostream::F_Force : 0)));
+  if (!ErrorInfo.empty()) {
+    errs() << ErrorInfo << '\n';
+    if (!Force)
+      errs() << "Use -f command line argument to force output\n";
+    return 1;
   }
 
   Passes.add(createBitcodeWriterPass(*Out));
   Passes.run(*M.get());
 
-  if (Out != &outs())
-    delete Out;
   return 0;
 }