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>
/* 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))
+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
/* 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
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. */
/* 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);
pop_from_top_level ();
}
- function_depth--;
-
/* We don't need to process the original function any further. */
return 1;
}