diff options
author | Richard Kenner <kenner@vlsi1.ultra.nyu.edu> | 2004-07-28 02:27:20 +0000 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 2004-07-27 22:27:20 -0400 |
commit | 1a837f7746a6627e3651119531de18fcd95d6dfd (patch) | |
tree | 568e306fd21e996f7b463cb5bdd43364edf136f6 /gcc/tree-optimize.c | |
parent | e847cc68ebc1e2a961941e75ae613fec9f90463b (diff) | |
download | gcc-1a837f7746a6627e3651119531de18fcd95d6dfd.zip gcc-1a837f7746a6627e3651119531de18fcd95d6dfd.tar.gz gcc-1a837f7746a6627e3651119531de18fcd95d6dfd.tar.bz2 |
re PR tree-optimization/15077 (ICE in make_decl_rtl when inlining tail recursive nested function)
PR optimization/15077
* function.h (struct function): Add field saved_static_chain_decl.
Fix comment for static_chain_decl.
* tree-inline.c (save_body): Add new arg and handle static_chain_decl.
* tree-inline.h (save_body): Add new arg.
* tree-optimize.c (tree_rest_of_compilation): Handle saving
static_chain_decl.
From-SVN: r85247
Diffstat (limited to 'gcc/tree-optimize.c')
-rw-r--r-- | gcc/tree-optimize.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/tree-optimize.c b/gcc/tree-optimize.c index 7cdb30b..d575990 100644 --- a/gcc/tree-optimize.c +++ b/gcc/tree-optimize.c @@ -524,7 +524,9 @@ tree_rest_of_compilation (tree fndecl, bool nested_p) if (!e->inline_failed) cgraph_clone_inlined_nodes (e, true); } - cfun->saved_tree = save_body (fndecl, &cfun->saved_args); + cfun->saved_static_chain_decl = cfun->static_chain_decl; + cfun->saved_tree = save_body (fndecl, &cfun->saved_args, + &cfun->saved_static_chain_decl); } if (flag_inline_trees) @@ -557,6 +559,7 @@ tree_rest_of_compilation (tree fndecl, bool nested_p) { DECL_SAVED_TREE (fndecl) = cfun->saved_tree; DECL_ARGUMENTS (fndecl) = cfun->saved_args; + cfun->static_chain_decl = cfun->saved_static_chain_decl; /* When not in unit-at-a-time mode, we must preserve out of line copy representing node before inlining. Restore original outgoing edges |