Partial fix PR c++/12850
Partial fix PR c++/12850 * cgraphunit.c (cgraph_finalize_function): Always ggc_collect when at zero nest level. * decl2.c (mark_used): Do not proactively instantiate templates when compiling in unit-at-a-time or not optimizing. * optimize.c (maybe_clone_body): Do not increase function depth. From-SVN: r75823
This commit is contained in:
parent
c951359074
commit
d34cb6a149
5 changed files with 22 additions and 13 deletions
|
@ -1,9 +1,8 @@
|
|||
2004-01-14 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* c-common.c (c_estimate_num_insns_1): Fix bug in MODIFY_EXPR
|
||||
cost estimation.
|
||||
* expr.c (MOVE_RATIO, CLEAR_RATIO): Move to ...
|
||||
* expr.h (MOVE_RATIO, CLEAR_RATIO): ... here.
|
||||
Partial fix PR c++/12850
|
||||
* cgraphunit.c (cgraph_finalize_function): Always ggc_collect when
|
||||
at zero nest level.
|
||||
|
||||
2004-01-13 Bernardo Innocenti <bernie@develer.com>
|
||||
|
||||
|
|
|
@ -219,7 +219,10 @@ cgraph_finalize_function (tree decl, bool nested)
|
|||
/* If not unit at a time, go ahead and emit everything we've found
|
||||
to be reachable at this time. */
|
||||
if (!nested)
|
||||
cgraph_assemble_pending_functions ();
|
||||
{
|
||||
if (!cgraph_assemble_pending_functions ())
|
||||
ggc_collect ();
|
||||
}
|
||||
|
||||
/* If we've not yet emitted decl, tell the debug info about it. */
|
||||
if (!TREE_ASM_WRITTEN (decl))
|
||||
|
|
|
@ -1,3 +1,10 @@
|
|||
2004-01-14 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
Partial fix to PR c++/12850
|
||||
* decl2.c (mark_used): Do not proactively instantiate templates
|
||||
when compiling in unit-at-a-time or not optimizing.
|
||||
* optimize.c (maybe_clone_body): Do not increase function depth.
|
||||
|
||||
2004-01-13 Giovanni Bajo <giovannibajo@gcc.gnu.org>
|
||||
|
||||
PR c++/13474
|
||||
|
|
|
@ -2580,6 +2580,7 @@ finish_file (void)
|
|||
/* If there are templates that we've put off instantiating, do
|
||||
them now. */
|
||||
instantiate_pending_templates ();
|
||||
ggc_collect ();
|
||||
|
||||
/* Write out virtual tables as required. Note that writing out
|
||||
the virtual table for a template class may cause the
|
||||
|
@ -3012,8 +3013,14 @@ mark_used (tree decl)
|
|||
|
||||
However, if instantiating this function might help us mark
|
||||
the current function TREE_NOTHROW, we go ahead and
|
||||
instantiate it now. */
|
||||
instantiate it now.
|
||||
|
||||
This is not needed for unit-at-a-time since we reorder the functions
|
||||
in topological order anyway.
|
||||
*/
|
||||
defer = (!flag_exceptions
|
||||
|| flag_unit_at_a_time
|
||||
|| !optimize
|
||||
|| TREE_CODE (decl) != FUNCTION_DECL
|
||||
/* If the called function can't throw, we don't need to
|
||||
generate its body to find that out. */
|
||||
|
|
|
@ -129,11 +129,6 @@ maybe_clone_body (tree fn)
|
|||
/* Emit the DWARF1 abstract instance. */
|
||||
(*debug_hooks->deferred_inline_function) (fn);
|
||||
|
||||
/* Our caller does not expect collection to happen, which it might if
|
||||
we decide to compile the function to rtl now. Arrange for a new
|
||||
gc context to be created if so. */
|
||||
function_depth++;
|
||||
|
||||
/* We know that any clones immediately follow FN in the TYPE_METHODS
|
||||
list. */
|
||||
for (clone = TREE_CHAIN (fn);
|
||||
|
@ -253,8 +248,6 @@ maybe_clone_body (tree fn)
|
|||
pop_from_top_level ();
|
||||
}
|
||||
|
||||
function_depth--;
|
||||
|
||||
/* We don't need to process the original function any further. */
|
||||
return 1;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue