From: burnus Date: Mon, 19 Dec 2011 20:18:18 +0000 (+0000) Subject: 2011-12-19 Tobias Burnus X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=commitdiff_plain;h=648752f0c03463e04c787f9cc4b31d672a564d13 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@182497 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index e5e8e7fe340..d9a9b430a42 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,6 +1,12 @@ 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 * match.c (gfc_match_select_type): Handle scalar polymophic coarrays. (select_type_set_tmp, ): Ditto; avoid segfault if !class_ok. 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