mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-04 17:40:25 +08:00
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:
parent
49bce30a21
commit
da69cc9160
@ -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.
|
||||
|
@ -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),
|
||||
|
@ -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
|
||||
|
37
gcc/testsuite/gfortran.dg/debug/pr35154-dwarf2.f
Normal file
37
gcc/testsuite/gfortran.dg/debug/pr35154-dwarf2.f
Normal 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" } }
|
35
gcc/testsuite/gfortran.dg/debug/pr35154-stabs.f
Normal file
35
gcc/testsuite/gfortran.dg/debug/pr35154-stabs.f
Normal 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" } }
|
Loading…
Reference in New Issue
Block a user