Hi,
local passes are allowed to create new functions. The main iterator should 
however only
deal with those that was already there before.  This broke with my part 1 
symtab cleanup
patch, since I changed FOR_EACH_DEFINED_FUNCTION to test node->definition 
instead of
node->analyzed. Hopefully there won't be much more places needing fix.

Bootstrapped/regtested ppx64-linux with TLS disabled, commited.

Index: ChangeLog
===================================================================
--- ChangeLog   (revision 199581)
+++ ChangeLog   (working copy)
@@ -1,5 +1,10 @@
 2013-06-01  Jan Hubicka  <j...@suse.cz>
 
+       PR middle-end/57467
+       * passes.c (for_per_function): Skip unanalyzed functoins.
+
+2013-06-01  Jan Hubicka  <j...@suse.cz>
+
        * lto-symtab.c (lto_symtab_merge_cgraph_nodes_1): Rename to ...
        (lto_symtab_merge_symbols_1): ... this one.
        (lto_symtab_merge_cgraph_nodes): Rename to ...
Index: passes.c
===================================================================
--- passes.c    (revision 199581)
+++ passes.c    (working copy)
@@ -1709,7 +1709,7 @@
     {
       struct cgraph_node *node;
       FOR_EACH_DEFINED_FUNCTION (node)
-       if (gimple_has_body_p (node->symbol.decl)
+       if (node->symbol.analyzed && gimple_has_body_p (node->symbol.decl)
            && (!node->clone_of || node->symbol.decl != 
node->clone_of->symbol.decl))
          {
            push_cfun (DECL_STRUCT_FUNCTION (node->symbol.decl));

Reply via email to