diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-09-13 14:18:47 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-09-13 14:18:47 +0000 |
commit | 050e11c98e7ecc770dfce1db12ca8ad069bc3016 (patch) | |
tree | b69aa15ca9ee08567dcb3105ff151e820b8dc09a /gcc/cgraphunit.c | |
parent | f8b9c2e3473bc5eb181036bc6f716c637d52548d (diff) | |
download | gcc-050e11c98e7ecc770dfce1db12ca8ad069bc3016.tar.gz |
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@71360 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cgraphunit.c')
-rw-r--r-- | gcc/cgraphunit.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c index 3519359e9bf..f615d1bafa4 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. */ |