diff options
author | Richard Guenther <rguenther@suse.de> | 2010-09-10 14:22:22 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2010-09-10 14:22:22 +0000 |
commit | e836611d71929f88c013da2b1c8e0b72c714482e (patch) | |
tree | bdc41663871d392428396b7304a4d1c83f6adf8a | |
parent | 2dd3121f9ebb10bd60905a987a49c8cd83e7f264 (diff) | |
download | gcc-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/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/lto-streamer-in.c | 7 | ||||
-rw-r--r-- | gcc/lto-streamer-out.c | 3 | ||||
-rw-r--r-- | gcc/tree.c | 6 |
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; |