From e836611d71929f88c013da2b1c8e0b72c714482e Mon Sep 17 00:00:00 2001 From: Richard Guenther Date: Fri, 10 Sep 2010 14:22:22 +0000 Subject: [PATCH] re PR debug/44115 (gcc.dg/guality/sra-1.c failure) 2010-09-10 Richard Guenther 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 --- gcc/ChangeLog | 9 +++++++++ gcc/lto-streamer-in.c | 7 +++++++ gcc/lto-streamer-out.c | 3 +++ gcc/tree.c | 6 ------ 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3f9e53d..d187beb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,14 @@ 2010-09-10 Richard Guenther + 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 + * 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 870df2a..60d299c 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 e4ad1c9..90e3ccc 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 bc21491..b0f733f 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; -- 2.7.4