------- Comment #21 from ian at airs dot com  2008-04-23 22:33 -------
A patch like this seems like a decent workaround to me.

Honza, any opinions on this approach?

Ian

Index: cgraph.c
===================================================================
--- cgraph.c    (revision 134283)
+++ cgraph.c    (working copy)
@@ -615,6 +615,14 @@ cgraph_remove_node (struct cgraph_node *
        kill_body = true;
     }

+  /* We don't release the body of abstract functions, because they may
+     be needed when emitting debugging information.  In particular
+     this will happen for C++ constructors/destructors.  FIXME:
+     Ideally we would check to see whether there are any reachable
+     functions whose DECL_ABSTRACT_ORIGIN points to this decl.  */
+  if (DECL_ABSTRACT (node->decl))
+    kill_body = false;
+
   if (kill_body && flag_unit_at_a_time)
     cgraph_release_function_body (node);
   node->decl = NULL;


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27574

Reply via email to