aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/optimize.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2003-09-08 08:56:27 -0700
committerRichard Henderson <rth@gcc.gnu.org>2003-09-08 08:56:27 -0700
commitc1f927e84ec73debafbc0114cc4d81abd1b27ae7 (patch)
treead932cb4dec8a82eb9fd686cb0a6c341596f0816 /gcc/cp/optimize.c
parent7f14bbe68f1fac27349b5154730aeb2e23e97dfa (diff)
downloadgcc-c1f927e84ec73debafbc0114cc4d81abd1b27ae7.zip
gcc-c1f927e84ec73debafbc0114cc4d81abd1b27ae7.tar.gz
gcc-c1f927e84ec73debafbc0114cc4d81abd1b27ae7.tar.bz2
c-decl.c (c_expand_body_1): Push and pop function context here.
gcc/ * c-decl.c (c_expand_body_1): Push and pop function context here. * tree-optimize.c (tree_rest_of_compilation): ... not here. Take nested argument instead of computing nesting ourselves. gcc/cp/ * decl.c (finish_function): Clear current_function_decl. * decl2.c (mark_used): Don't push/pop gc context. * optimize.c (optimize_function): Likewise. * tree.c (cp_cannot_inline_tree_fn): Likewise. * pt.c (instantiate_decl): Inc/dec function_depth instead. * semantics.c (expand_body): Update for tree_rest_of_compilation nested argument. From-SVN: r71208
Diffstat (limited to 'gcc/cp/optimize.c')
-rw-r--r--gcc/cp/optimize.c24
1 files changed, 0 insertions, 24 deletions
diff --git a/gcc/cp/optimize.c b/gcc/cp/optimize.c
index 7be410e..bcb74e4 100644
--- a/gcc/cp/optimize.c
+++ b/gcc/cp/optimize.c
@@ -56,31 +56,7 @@ optimize_function (tree fn)
and (d) TARGET_ASM_OUTPUT_MI_THUNK is there to DTRT anyway. */
&& !DECL_THUNK_P (fn))
{
- /* ??? Work around GC problem. Call stack is
-
- -> instantiate_decl
- -> expand_or_defer_fn
- -> maybe_clone_body
- -> expand_body
- -> tree_rest_of_compilation
-
- which of course collects. This used to be protected by the
- "regular" nested call ggc_push_context that now lives in
- tree_rest_of_compilation.
-
- Two good fixes:
- (1) Do inlining in tree_rest_of_compilation. This is good
- in that this common optimization happens in common code.
- (2) Don't nest compilation of functions. Instead queue the
- new function to cgraph, and let it get picked up in the
- next round of "emit everything that needs emitting".
-
- For the nonce, just protect things here. */
-
- ggc_push_context ();
optimize_inline_calls (fn);
- ggc_pop_context ();
-
dump_function (TDI_inlined, fn);
}