diff options
author | Richard Henderson <rth@redhat.com> | 2003-09-13 07:18:47 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2003-09-13 07:18:47 -0700 |
commit | f6d1b84aa4526d360d77c795167cfb217da89e65 (patch) | |
tree | b69aa15ca9ee08567dcb3105ff151e820b8dc09a | |
parent | 8daf2e652621464650af1fce25f1a9f86b2f39a7 (diff) | |
download | gcc-f6d1b84aa4526d360d77c795167cfb217da89e65.zip gcc-f6d1b84aa4526d360d77c795167cfb217da89e65.tar.gz gcc-f6d1b84aa4526d360d77c795167cfb217da89e65.tar.bz2 |
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
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/cgraph.h | 1 | ||||
-rw-r--r-- | gcc/cgraphunit.c | 18 | ||||
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/decl2.c | 3 |
5 files changed, 30 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1e3e5ae1..aec351d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,4 +1,11 @@ +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> + * config/rs6000/rs6000.c: Fix typos in previous. 2003-09-12 Ziemowit Laski <zlaski@apple.com> diff --git a/gcc/cgraph.h b/gcc/cgraph.h index 3ec89b6..eb747d5 100644 --- a/gcc/cgraph.h +++ b/gcc/cgraph.h @@ -168,6 +168,7 @@ void cgraph_varpool_finalize_decl (tree); bool cgraph_varpool_assemble_pending_decls (void); /* In cgraphunit.c */ +bool cgraph_assemble_pending_functions (void); void cgraph_finalize_function (tree, bool); void cgraph_finalize_compilation_unit (void); void cgraph_create_edges (tree, tree); diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c index 3519359..f615d1b 100644 --- a/gcc/cgraphunit.c +++ b/gcc/cgraphunit.c @@ -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. Return true when such a functions were found. */ -static bool + +bool cgraph_assemble_pending_functions (void) { bool output = false; @@ -136,9 +137,12 @@ cgraph_assemble_pending_functions (void) cgraph_nodes_queue = cgraph_nodes_queue->next_needed; if (!n->origin && !DECL_EXTERNAL (n->decl)) - cgraph_expand_function (n); - output = true; + { + cgraph_expand_function (n); + output = true; + } } + return output; } @@ -164,7 +168,13 @@ cgraph_finalize_function (tree decl, bool nested) ??? It may make more sense to use one body for inlining and other 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 (); /* Reset our datastructures so we can analyze the function again. */ diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index f9a7339c..832b6d4 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +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> * decl2.c (var_finalized_p): Swap arms of conditional. diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 6f30cf9..16991f3 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -2863,6 +2863,9 @@ finish_file () && wrapup_global_declarations (&VARRAY_TREE (pending_statics, 0), pending_statics_used)) reconsider = true; + + if (cgraph_assemble_pending_functions ()) + reconsider = true; } while (reconsider); |