From 1e815d32216f4c35208830b02c933895b1c2e9e2 Mon Sep 17 00:00:00 2001 From: Tobias Burnus Date: Mon, 19 Dec 2011 21:18:18 +0100 Subject: [PATCH] re PR fortran/51605 (internal compiler error gfc_trans_block_construct, at fortran/trans-stmt.c:984) 2011-12-19 Tobias Burnus PR fortran/51605 * parse.c (gfc_fixup_sibling_symbols): Regard FL_LABEL as local symbol. 2011-12-19 Tobias Burnus PR fortran/51605 * gfortran.dg/block_10.f90: New. From-SVN: r182497 --- gcc/fortran/ChangeLog | 6 +++++ gcc/fortran/parse.c | 1 + gcc/testsuite/ChangeLog | 5 ++++ gcc/testsuite/gfortran.dg/block_10.f90 | 34 ++++++++++++++++++++++++++ 4 files changed, 46 insertions(+) create mode 100644 gcc/testsuite/gfortran.dg/block_10.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index e5e8e7fe340..d9a9b430a42 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2011-12-19 Tobias Burnus + + PR fortran/51605 + * parse.c (gfc_fixup_sibling_symbols): Regard FL_LABEL as + local symbol. + 2011-12-19 Tobias Burnus PR fortran/51605 diff --git a/gcc/fortran/parse.c b/gcc/fortran/parse.c index 7d91645207b..ea1d7736266 100644 --- a/gcc/fortran/parse.c +++ b/gcc/fortran/parse.c @@ -3908,6 +3908,7 @@ gfc_fixup_sibling_symbols (gfc_symbol *sym, gfc_namespace *siblings) || old_sym->attr.intrinsic || old_sym->attr.generic || old_sym->attr.flavor == FL_NAMELIST + || old_sym->attr.flavor == FL_LABEL || old_sym->attr.proc == PROC_ST_FUNCTION)) { /* Replace it with the symbol from the parent namespace. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d08c3ad0831..701fce8a223 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-12-19 Tobias Burnus + + PR fortran/51605 + * gfortran.dg/block_10.f90: New. + 2011-12-19 Jason Merrill PR c++/51553 diff --git a/gcc/testsuite/gfortran.dg/block_10.f90 b/gcc/testsuite/gfortran.dg/block_10.f90 new file mode 100644 index 00000000000..0751f797ebf --- /dev/null +++ b/gcc/testsuite/gfortran.dg/block_10.f90 @@ -0,0 +1,34 @@ +! { dg-do compile } +! +! PR fortran/51605 +! + +contains + subroutine foo + BLOCK_NAME: block + end block BLOCK_NAME + end subroutine foo + + subroutine BLOCK_NAME() + end subroutine BLOCK_NAME + + subroutine bar() + end subroutine bar +end + +subroutine test() +contains + subroutine BLOCK_NAME() + end subroutine BLOCK_NAME + + subroutine foobar() + end subroutine foobar + + subroutine foo + BLOCK_NAME: block + end block BLOCK_NAME + end subroutine foo + + subroutine bar() + end subroutine bar +end -- 2.30.2