From d25845222defb9ba651f2a670924057f114d95fe Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 9 Feb 2012 18:13:50 +0100 Subject: [PATCH] backport: re PR debug/51517 (Wrong debug information for pointers with negative strides.) Backported from mainline 2011-12-15 Jakub Jelinek PR debug/51517 * tree-ssa-coalesce.c (coalesce_ssa_name): For !optimize, test !DECL_IGNORED_P instead of !DECL_ARTIFICIAL. * trans-decl.c (gfc_get_symbol_decl): Don't set DECL_INITAL on span. (gfc_trans_deferred_vars): Instead add its runtime initialization here. From-SVN: r184048 --- gcc/ChangeLog | 9 +++++++++ gcc/fortran/ChangeLog | 10 ++++++++++ gcc/fortran/trans-decl.c | 12 +++++++++++- gcc/tree-ssa-coalesce.c | 2 +- 4 files changed, 31 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7fe19d29d832..fdd0daa557dc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2012-02-09 Jakub Jelinek + + Backported from mainline + 2011-12-15 Jakub Jelinek + + PR debug/51517 + * tree-ssa-coalesce.c (coalesce_ssa_name): For !optimize, test + !DECL_IGNORED_P instead of !DECL_ARTIFICIAL. + 2012-02-09 Peter Bergner Backport from mainline diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 8c18aecbe218..91be73403b3b 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,13 @@ +2012-02-09 Jakub Jelinek + + Backported from mainline + 2011-12-15 Jakub Jelinek + + PR debug/51517 + * trans-decl.c (gfc_get_symbol_decl): Don't set DECL_INITAL on span. + (gfc_trans_deferred_vars): Instead add its runtime initialization + here. + 2012-02-08 Tobias Burnus PR fortran/52151 diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index 50f137287eb4..5b5e7881c4d4 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -1352,7 +1352,6 @@ gfc_get_symbol_decl (gfc_symbol * sym) gfc_finish_var_decl (span, sym); TREE_STATIC (span) = TREE_STATIC (decl); DECL_ARTIFICIAL (span) = 1; - DECL_INITIAL (span) = build_int_cst (gfc_array_index_type, 0); GFC_DECL_SPAN (decl) = span; GFC_TYPE_ARRAY_SPAN (TREE_TYPE (decl)) = span; @@ -3394,6 +3393,17 @@ gfc_trans_deferred_vars (gfc_symbol * proc_sym, gfc_wrapped_block * block) if (sym->assoc) continue; + if (sym->attr.subref_array_pointer + && GFC_DECL_SPAN (sym->backend_decl) + && !TREE_STATIC (GFC_DECL_SPAN (sym->backend_decl))) + { + gfc_init_block (&tmpblock); + gfc_add_modify (&tmpblock, GFC_DECL_SPAN (sym->backend_decl), + build_int_cst (gfc_array_index_type, 0)); + gfc_add_init_cleanup (block, gfc_finish_block (&tmpblock), + NULL_TREE); + } + if (sym->attr.dimension) { /* Assumed-size Cray pointees need to be treated as AS_EXPLICIT. */ diff --git a/gcc/tree-ssa-coalesce.c b/gcc/tree-ssa-coalesce.c index e7490e6813c5..40514b4b8de7 100644 --- a/gcc/tree-ssa-coalesce.c +++ b/gcc/tree-ssa-coalesce.c @@ -1373,7 +1373,7 @@ coalesce_ssa_name (void) if (a && SSA_NAME_VAR (a) - && !DECL_ARTIFICIAL (SSA_NAME_VAR (a)) + && !DECL_IGNORED_P (SSA_NAME_VAR (a)) && (!has_zero_uses (a) || !SSA_NAME_IS_DEFAULT_DEF (a))) { tree *slot = (tree *) htab_find_slot (ssa_name_hash, a, INSERT); -- 2.47.2