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
This commit is contained in:
George Helffrich 2008-04-26 09:46:01 +00:00
parent 49bce30a21
commit da69cc9160
5 changed files with 93 additions and 2 deletions

View File

@ -1,3 +1,10 @@
2008-04-26 George Helffrich <george@gcc.gnu.org>
PR fortran/35892
PR fortran/35154
* trans-common.c (create_common): Add decl to function
chain (if inside one) to preserve identifier scope in debug output.
2008-04-25 Jan Hubicka <jh@suse.cz>
* trans-decl.c (trans_function_start): Update.

View File

@ -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),

View File

@ -1,3 +1,11 @@
2008-04-26 George Helffrich <george@gcc.gnu.org>
PRs fortran/PR35154, fortran/PR23057
* gfortran.dg/debug/pr35154-stabs.f: New test case for
.stabs functionality.
* gfortran.dg/debug/pr35154-dwarf2.f: New test case for
DWARF functionality.
2008-04-26 Richard Sandiford <rsandifo@nildram.co.uk>
* gcc.target/mips/gcc-have-sync-compare-and-swap-1.c: Expect

View File

@ -0,0 +1,37 @@
C Test program for common block debugging. G. Helffrich 11 July 2004.
C { dg-do compile }
C { dg-skip-if "DWARF-2 only" { "*-*-*" } { "*" } { "-gdwarf-2" } }
C { dg-options "-dA" }
common i,j
common /label/l,m
i = 1
j = 2
k = 3
l = 4
m = 5
call sub
end
subroutine sub
common /label/l,m
logical first
save n
data first /.true./
if (first) then
n = 0
first = .false.
endif
n = n + 1
l = l + 1
return
end
C { dg-final { scan-assembler "(DIE.*DW_TAG_common_block)" } }
C { dg-final { scan-assembler "DW_AT_name: \"__BLNK__\"" } }
C { dg-final { scan-assembler "(DIE.*DW_TAG_member)" } }
C { dg-final { scan-assembler "\"i.*\".*DW_AT_name" } }
C { dg-final { scan-assembler "\"j.*\".*DW_AT_name" } }
C { dg-final { scan-assembler "(DIE.*DW_TAG_common_block)" } }
C { dg-final { scan-assembler "DW_AT_name: \"label\"" } }
C { dg-final { scan-assembler "(DIE.*DW_TAG_member)" } }
C { dg-final { scan-assembler "\"l.*\".*DW_AT_name" } }
C { dg-final { scan-assembler "\"m.*\".*DW_AT_name" } }

View File

@ -0,0 +1,35 @@
C Test program for common block debugging. G. Helffrich 11 July 2004.
C { dg-do compile }
C { dg-skip-if "No stabs" { mmix-*-* *-*-netware* alpha*-*-* hppa*64*-*-* ia64-*-* *-*-sysv5* *-*-vxworks* } { "*" } { "" } }
C { dg-skip-if "No stabs" {*-*-* } { "*" } { "-gstabs" } }
common i,j
common /label/l,m
i = 1
j = 2
k = 3
l = 4
m = 5
call sub
end
subroutine sub
common /label/l,m
logical first
save n
data first /.true./
if (first) then
n = 0
first = .false.
endif
n = n + 1
l = l + 1
return
end
C { dg-final { scan-assembler ".stabs.*\"__BLNK__\",226" } }
C { dg-final { scan-assembler ".stabs.*\"i:V.*\",.*,0" } }
C { dg-final { scan-assembler ".stabs.*\"j:V.*\",.*,4" } }
C { dg-final { scan-assembler ".stabs.*\"__BLNK__\",228" } }
C { dg-final { scan-assembler ".stabs.*\"label_\",226" } }
C { dg-final { scan-assembler ".stabs.*\"l:V.*\",.*,0" } }
C { dg-final { scan-assembler ".stabs.*\"m:V.*\",.*,4" } }
C { dg-final { scan-assembler ".stabs.*\"label_\",228" } }