diff options
author | George Helffrich <george@gcc.gnu.org> | 2008-04-26 09:46:01 +0000 |
---|---|---|
committer | George Helffrich <george@gcc.gnu.org> | 2008-04-26 09:46:01 +0000 |
commit | da69cc9160391a75d646caf33d0c6a4074277646 (patch) | |
tree | 41a41127f1938338b6b87dd1bde0414e40bfc07f /gcc/fortran/trans-common.c | |
parent | 49bce30a21d7cec8632fba32fd83abe7db1acad5 (diff) | |
download | gcc-da69cc9160391a75d646caf33d0c6a4074277646.zip gcc-da69cc9160391a75d646caf33d0c6a4074277646.tar.gz gcc-da69cc9160391a75d646caf33d0c6a4074277646.tar.bz2 |
re PR fortran/35892 (gfortran lost memory blocks)
2008-04-26 George Helffrich <george@gcc.gnu.org>
PR fortran/35892
PR fortran/35154
* fortran/trans-common.c (create_common): Add decl to function
chain (if inside one) to preserve identifier scope in debug output.
* testsuite/gfortran.dg/debug/pr35154-stabs.f: New test case for
.stabs functionality.
* testsuite/gfortran.dg/debug/pr35154-dwarf2.f: New test case for
DWARF functionality.
From-SVN: r134696
Diffstat (limited to 'gcc/fortran/trans-common.c')
-rw-r--r-- | gcc/fortran/trans-common.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/fortran/trans-common.c b/gcc/fortran/trans-common.c index c6a386e..5c91bf5 100644 --- a/gcc/fortran/trans-common.c +++ b/gcc/fortran/trans-common.c @@ -685,10 +685,14 @@ create_common (gfc_common_head *com, segment_info *head, bool saw_equiv) /* This is a fake variable just for debugging purposes. */ TREE_ASM_WRITTEN (var_decl) = 1; - if (com) + /* To preserve identifier names in COMMON, chain to procedure + scope unless at top level in a module definition. */ + if (com + && s->sym->ns->proc_name + && s->sym->ns->proc_name->attr.flavor == FL_MODULE) var_decl = pushdecl_top_level (var_decl); else - gfc_add_decl_to_function (var_decl); + gfc_add_decl_to_function (var_decl); SET_DECL_VALUE_EXPR (var_decl, fold_build3 (COMPONENT_REF, TREE_TYPE (s->field), |