PR middle-end/57467
Jan Hubicka
hubicka@ucw.cz
Sat Jun 1 16:43:00 GMT 2013
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 <jh@suse.cz>
+ PR middle-end/57467
+ * passes.c (for_per_function): Skip unanalyzed functoins.
+
+2013-06-01 Jan Hubicka <jh@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));
More information about the Gcc-patches
mailing list