Move backend output out of destructor.

Don't free AST consumer when --disable-free is set.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59030 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Driver/Backend.cpp b/Driver/Backend.cpp
index dbe46fc..f16c069 100644
--- a/Driver/Backend.cpp
+++ b/Driver/Backend.cpp
@@ -89,9 +89,6 @@
       CodeGenPasses(0), PerModulePasses(0), PerFunctionPasses(0) {}
 
     ~BackendConsumer() {
-      // FIXME: Move out of destructor.
-      EmitAssembly();
-
       delete AsmOutStream;
       delete TheTargetData;
       delete ModuleProvider;
@@ -115,6 +112,11 @@
     
     virtual void HandleTranslationUnit(TranslationUnit& TU) {
       Gen->HandleTranslationUnit(TU);
+
+      EmitAssembly();      
+      // Force a flush here in case we never get released.
+      if (AsmOutStream)
+        AsmOutStream->flush();
     }
     
     virtual void HandleTagDeclDefinition(TagDecl *D) {