diff options
author | Richard Guenther <rguenther@suse.de> | 2012-09-28 11:07:17 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2012-09-28 11:07:17 +0000 |
commit | 9aef8e955f7c306437d125a99607baaabadbb8d3 (patch) | |
tree | 167783f0b34af1e16f0faae91cd6ea78589caba7 /gcc | |
parent | b8dbdb1275f24e94c8f9f80154676967116fff5a (diff) | |
download | gcc-9aef8e955f7c306437d125a99607baaabadbb8d3.zip gcc-9aef8e955f7c306437d125a99607baaabadbb8d3.tar.gz gcc-9aef8e955f7c306437d125a99607baaabadbb8d3.tar.bz2 |
re PR lto/47799 (LTO debug info for early inlined functions missing)
2012-09-28 Richard Guenther <rguenther@suse.de>
PR lto/47799
* lto-streamer-out.c (tree_is_indexable): Make PARM_DECLs global.
(lto_output_tree_ref): Handle references to them.
(output_function): Do not output function arguments again.
* lto-streamer-in.c (input_function): Do not input arguments
again, nor overwrite them.
From-SVN: r191824
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/lto-streamer-in.c | 17 | ||||
-rw-r--r-- | gcc/lto-streamer-out.c | 6 |
3 files changed, 11 insertions, 21 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3f6ced6..cf298f1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,14 @@ 2012-09-28 Richard Guenther <rguenther@suse.de> + PR lto/47799 + * lto-streamer-out.c (tree_is_indexable): Make PARM_DECLs global. + (lto_output_tree_ref): Handle references to them. + (output_function): Do not output function arguments again. + * lto-streamer-in.c (input_function): Do not input arguments + again, nor overwrite them. + +2012-09-28 Richard Guenther <rguenther@suse.de> + * cgraph.h (symtab_node_base): Re-order and pack fields. 2012-09-28 Georg-Johann Lay <avr@gjlay.de> diff --git a/gcc/lto-streamer-in.c b/gcc/lto-streamer-in.c index a4b94b1..9121521 100644 --- a/gcc/lto-streamer-in.c +++ b/gcc/lto-streamer-in.c @@ -823,7 +823,6 @@ input_function (tree fn_decl, struct data_in *data_in, gimple *stmts; basic_block bb; struct cgraph_node *node; - tree args, narg, oarg; fn = DECL_STRUCT_FUNCTION (fn_decl); tag = streamer_read_record_start (ib); @@ -834,22 +833,6 @@ input_function (tree fn_decl, struct data_in *data_in, input_struct_function_base (fn, data_in, ib); - /* Read all function arguments. We need to re-map them here to the - arguments of the merged function declaration. */ - args = stream_read_tree (ib, data_in); - for (oarg = args, narg = DECL_ARGUMENTS (fn_decl); - oarg && narg; - oarg = TREE_CHAIN (oarg), narg = TREE_CHAIN (narg)) - { - unsigned ix; - bool res; - res = streamer_tree_cache_lookup (data_in->reader_cache, oarg, &ix); - gcc_assert (res); - /* Replace the argument in the streamer cache. */ - streamer_tree_cache_insert_at (data_in->reader_cache, narg, ix); - } - gcc_assert (!oarg && !narg); - /* Read all the SSA names. */ input_ssa_names (ib, data_in, fn); diff --git a/gcc/lto-streamer-out.c b/gcc/lto-streamer-out.c index 709eb60..afe4951 100644 --- a/gcc/lto-streamer-out.c +++ b/gcc/lto-streamer-out.c @@ -125,7 +125,7 @@ static bool tree_is_indexable (tree t) { if (TREE_CODE (t) == PARM_DECL) - return false; + return true; else if (TREE_CODE (t) == VAR_DECL && decl_function_context (t) && !TREE_STATIC (t)) return false; @@ -237,6 +237,7 @@ lto_output_tree_ref (struct output_block *ob, tree expr) case VAR_DECL: case DEBUG_EXPR_DECL: gcc_assert (decl_function_context (expr) == NULL || TREE_STATIC (expr)); + case PARM_DECL: streamer_write_record_start (ob, LTO_global_decl_ref); lto_output_var_decl_index (ob->decl_state, ob->main_stream, expr); break; @@ -806,9 +807,6 @@ output_function (struct cgraph_node *node) output_struct_function_base (ob, fn); - /* Output the head of the arguments list. */ - stream_write_tree (ob, DECL_ARGUMENTS (function), true); - /* Output all the SSA names used in the function. */ output_ssa_names (ob, fn); |