[cfe-commits] r59030 - in /cfe/trunk/Driver: Backend.cpp clang.cpp

Daniel Dunbar daniel at zuster.org
Mon Nov 10 22:35:40 PST 2008


Author: ddunbar
Date: Tue Nov 11 00:35:39 2008
New Revision: 59030

URL: http://llvm.org/viewvc/llvm-project?rev=59030&view=rev
Log:
Move backend output out of destructor.

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

Modified:
    cfe/trunk/Driver/Backend.cpp
    cfe/trunk/Driver/clang.cpp

Modified: cfe/trunk/Driver/Backend.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Driver/Backend.cpp?rev=59030&r1=59029&r2=59030&view=diff

==============================================================================
--- cfe/trunk/Driver/Backend.cpp (original)
+++ cfe/trunk/Driver/Backend.cpp Tue Nov 11 00:35:39 2008
@@ -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) {

Modified: cfe/trunk/Driver/clang.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Driver/clang.cpp?rev=59030&r1=59029&r2=59030&view=diff

==============================================================================
--- cfe/trunk/Driver/clang.cpp (original)
+++ cfe/trunk/Driver/clang.cpp Tue Nov 11 00:35:39 2008
@@ -1363,6 +1363,9 @@
   // files.
   if (ClearSourceMgr)
     PP.getSourceManager().clearIDTables();
+
+  if (DisableFree)
+    Consumer.take();
 }
 
 static void ProcessSerializedFile(const std::string& InFile, Diagnostic& Diag,





More information about the cfe-commits mailing list