Commit f6d1b84a by Richard Henderson Committed by Richard Henderson

cgraphunit.c (cgraph_assemble_pending_functions): Export.

        * cgraphunit.c (cgraph_assemble_pending_functions): Export.
        (cgraph_finalize_function): Revert TREE_ASM_WRITTEN check.
        * cgraph.h: Update.

        * decl2.c (finish_file): Check cgraph_assemble_pending_functions
        during relaxation loop.

From-SVN: r71360
parent 8daf2e65
2003-09-13 Richard Henderson <rth@redhat.com>
* cgraphunit.c (cgraph_assemble_pending_functions): Export.
(cgraph_finalize_function): Revert TREE_ASM_WRITTEN check.
* cgraph.h: Update.
2003-09-12 Dale Johannesen <dalej@apple.com> 2003-09-12 Dale Johannesen <dalej@apple.com>
* config/rs6000/rs6000.c: Fix typos in previous. * config/rs6000/rs6000.c: Fix typos in previous.
2003-09-12 Ziemowit Laski <zlaski@apple.com> 2003-09-12 Ziemowit Laski <zlaski@apple.com>
......
...@@ -168,6 +168,7 @@ void cgraph_varpool_finalize_decl (tree); ...@@ -168,6 +168,7 @@ void cgraph_varpool_finalize_decl (tree);
bool cgraph_varpool_assemble_pending_decls (void); bool cgraph_varpool_assemble_pending_decls (void);
/* In cgraphunit.c */ /* In cgraphunit.c */
bool cgraph_assemble_pending_functions (void);
void cgraph_finalize_function (tree, bool); void cgraph_finalize_function (tree, bool);
void cgraph_finalize_compilation_unit (void); void cgraph_finalize_compilation_unit (void);
void cgraph_create_edges (tree, tree); void cgraph_create_edges (tree, tree);
......
...@@ -122,7 +122,8 @@ decide_is_function_needed (struct cgraph_node *node, tree decl) ...@@ -122,7 +122,8 @@ decide_is_function_needed (struct cgraph_node *node, tree decl)
/* When not doing unit-at-a-time, output all functions enqueued. /* When not doing unit-at-a-time, output all functions enqueued.
Return true when such a functions were found. */ Return true when such a functions were found. */
static bool
bool
cgraph_assemble_pending_functions (void) cgraph_assemble_pending_functions (void)
{ {
bool output = false; bool output = false;
...@@ -136,9 +137,12 @@ cgraph_assemble_pending_functions (void) ...@@ -136,9 +137,12 @@ cgraph_assemble_pending_functions (void)
cgraph_nodes_queue = cgraph_nodes_queue->next_needed; cgraph_nodes_queue = cgraph_nodes_queue->next_needed;
if (!n->origin && !DECL_EXTERNAL (n->decl)) if (!n->origin && !DECL_EXTERNAL (n->decl))
{
cgraph_expand_function (n); cgraph_expand_function (n);
output = true; output = true;
} }
}
return output; return output;
} }
...@@ -164,7 +168,13 @@ cgraph_finalize_function (tree decl, bool nested) ...@@ -164,7 +168,13 @@ cgraph_finalize_function (tree decl, bool nested)
??? It may make more sense to use one body for inlining and other ??? It may make more sense to use one body for inlining and other
body for expanding the function but this is dificult to do. */ body for expanding the function but this is dificult to do. */
if (TREE_ASM_WRITTEN (decl)) /* If node->output is set, then this is a unit-at-a-time compilation
and we have already begun whole-unit analysis. This is *not*
testing for whether we've already emitted the function. That
case can be sort-of legitimately seen with real function
redefinition errors. I would argue that the front end should
never present us with such a case, but don't enforce that for now. */
if (node->output)
abort (); abort ();
/* Reset our datastructures so we can analyze the function again. */ /* Reset our datastructures so we can analyze the function again. */
......
2003-09-13 Richard Henderson <rth@redhat.com>
* decl2.c (finish_file): Check cgraph_assemble_pending_functions
during relaxation loop.
2003-09-11 David Edelsohn <edelsohn@gnu.org> 2003-09-11 David Edelsohn <edelsohn@gnu.org>
* decl2.c (var_finalized_p): Swap arms of conditional. * decl2.c (var_finalized_p): Swap arms of conditional.
......
...@@ -2863,6 +2863,9 @@ finish_file () ...@@ -2863,6 +2863,9 @@ finish_file ()
&& wrapup_global_declarations (&VARRAY_TREE (pending_statics, 0), && wrapup_global_declarations (&VARRAY_TREE (pending_statics, 0),
pending_statics_used)) pending_statics_used))
reconsider = true; reconsider = true;
if (cgraph_assemble_pending_functions ())
reconsider = true;
} }
while (reconsider); while (reconsider);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment