summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2010-09-10 14:22:22 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2010-09-10 14:22:22 +0000
commite836611d71929f88c013da2b1c8e0b72c714482e (patch)
treebdc41663871d392428396b7304a4d1c83f6adf8a
parent2dd3121f9ebb10bd60905a987a49c8cd83e7f264 (diff)
downloadgcc-e836611d71929f88c013da2b1c8e0b72c714482e.tar.gz
re PR debug/44115 (gcc.dg/guality/sra-1.c failure)
2010-09-10 Richard Guenther <rguenther@suse.de> PR debug/44115 * tree.c (free_lang_data_in_decl): Do not clear DECL_DEBUG_EXPR. * lto-streamer-out.c (lto_output_ts_decl_common_tree_pointers): Output DECL_DEBUG_EXPR. * lto-streamer-in.c (lto_input_ts_decl_common_tree_pointers): Input DECL_DEBUG_EXPR. From-SVN: r164179
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/lto-streamer-in.c7
-rw-r--r--gcc/lto-streamer-out.c3
-rw-r--r--gcc/tree.c6
4 files changed, 19 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3f9e53d1213..d187beb79b1 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,14 @@
2010-09-10 Richard Guenther <rguenther@suse.de>
+ PR debug/44115
+ * tree.c (free_lang_data_in_decl): Do not clear DECL_DEBUG_EXPR.
+ * lto-streamer-out.c (lto_output_ts_decl_common_tree_pointers):
+ Output DECL_DEBUG_EXPR.
+ * lto-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
+ Input DECL_DEBUG_EXPR.
+
+2010-09-10 Richard Guenther <rguenther@suse.de>
+
* tree.c (type_hash_eq): For ARRAY_TYPEs also compare
TYPE_SIZE.
(build_index_type): Implement in terms of build_range_type.
diff --git a/gcc/lto-streamer-in.c b/gcc/lto-streamer-in.c
index 870df2af1f7..60d299ca943 100644
--- a/gcc/lto-streamer-in.c
+++ b/gcc/lto-streamer-in.c
@@ -1932,6 +1932,13 @@ lto_input_ts_decl_common_tree_pointers (struct lto_input_block *ib,
|| TREE_CODE (expr) == PARM_DECL)
&& DECL_HAS_VALUE_EXPR_P (expr))
SET_DECL_VALUE_EXPR (expr, lto_input_tree (ib, data_in));
+
+ if (TREE_CODE (expr) == VAR_DECL)
+ {
+ tree dexpr = lto_input_tree (ib, data_in);
+ if (dexpr)
+ SET_DECL_DEBUG_EXPR (expr, dexpr);
+ }
}
diff --git a/gcc/lto-streamer-out.c b/gcc/lto-streamer-out.c
index e4ad1c9c242..90e3ccccb46 100644
--- a/gcc/lto-streamer-out.c
+++ b/gcc/lto-streamer-out.c
@@ -861,6 +861,9 @@ lto_output_ts_decl_common_tree_pointers (struct output_block *ob, tree expr,
|| TREE_CODE (expr) == PARM_DECL)
&& DECL_HAS_VALUE_EXPR_P (expr))
lto_output_tree_or_ref (ob, DECL_VALUE_EXPR (expr), ref_p);
+
+ if (TREE_CODE (expr) == VAR_DECL)
+ lto_output_tree_or_ref (ob, DECL_DEBUG_EXPR (expr), ref_p);
}
diff --git a/gcc/tree.c b/gcc/tree.c
index bc2149109d6..b0f733f0ccb 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -4540,12 +4540,6 @@ free_lang_data_in_decl (tree decl)
}
else if (TREE_CODE (decl) == VAR_DECL)
{
- tree expr = DECL_DEBUG_EXPR (decl);
- if (expr
- && TREE_CODE (expr) == VAR_DECL
- && !TREE_STATIC (expr) && !DECL_EXTERNAL (expr))
- SET_DECL_DEBUG_EXPR (decl, NULL_TREE);
-
if (DECL_EXTERNAL (decl)
&& (!TREE_STATIC (decl) || !TREE_READONLY (decl)))
DECL_INITIAL (decl) = NULL_TREE;