aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2012-09-28 11:07:17 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2012-09-28 11:07:17 +0000
commit9aef8e955f7c306437d125a99607baaabadbb8d3 (patch)
tree167783f0b34af1e16f0faae91cd6ea78589caba7 /gcc
parentb8dbdb1275f24e94c8f9f80154676967116fff5a (diff)
downloadgcc-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/ChangeLog9
-rw-r--r--gcc/lto-streamer-in.c17
-rw-r--r--gcc/lto-streamer-out.c6
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);