Index: gcc/fortran/ChangeLog =================================================================== --- gcc/fortran/ChangeLog (revision 229307) +++ gcc/fortran/ChangeLog (working copy) @@ -1,3 +1,14 @@ +2015-10-26 Louis Krupp + + PR fortran/66056 + * fortran.h: Include namespace pointer in statement label + structure. + * symbol.c (gfc_get_st_label): Store pointer to namespace + that owns the statement label tree in each label. + (gfc_free_st_label): Use namespace owning statement label + tree when deleting statement label. + * io.c: Initialize format_asterisk with NULL namespace pointer. + 2015-01-25 Paul Thomas PR fortran/67171 Index: gcc/fortran/gfortran.h =================================================================== --- gcc/fortran/gfortran.h (revision 229307) +++ gcc/fortran/gfortran.h (working copy) @@ -1291,6 +1291,8 @@ typedef struct gfc_st_label tree backend_decl; locus where; + + gfc_namespace *ns; } gfc_st_label; Index: gcc/fortran/io.c =================================================================== --- gcc/fortran/io.c (revision 229307) +++ gcc/fortran/io.c (working copy) @@ -28,7 +28,7 @@ along with GCC; see the file COPYING3. If not see gfc_st_label format_asterisk = {0, NULL, NULL, -1, ST_LABEL_FORMAT, ST_LABEL_FORMAT, NULL, - 0, {NULL, NULL}}; + 0, {NULL, NULL}, NULL}; typedef struct { Index: gcc/fortran/symbol.c =================================================================== --- gcc/fortran/symbol.c (revision 229307) +++ gcc/fortran/symbol.c (working copy) @@ -2195,7 +2195,7 @@ gfc_free_st_label (gfc_st_label *label) if (label == NULL) return; - gfc_delete_bbt (&gfc_current_ns->st_labels, label, compare_st_labels); + gfc_delete_bbt (&label->ns->st_labels, label, compare_st_labels); if (label->format != NULL) gfc_free_expr (label->format); @@ -2260,6 +2260,7 @@ gfc_get_st_label (int labelno) lp->value = labelno; lp->defined = ST_LABEL_UNKNOWN; lp->referenced = ST_LABEL_UNKNOWN; + lp->ns = ns; gfc_insert_bbt (&ns->st_labels, lp, compare_st_labels); Index: gcc/testsuite/ChangeLog =================================================================== --- gcc/testsuite/ChangeLog (revision 229307) +++ gcc/testsuite/ChangeLog (working copy) @@ -1,3 +1,8 @@ +2015-10-26 Louis Krupp + + PR fortran/66056 + * gfortran.dg/empty_label_typedecl.f90: New test + 2015-01-25 Paul Thomas PR fortran/67171 Index: gcc/testsuite/gfortran.dg/empty_label_typedecl.f90 =================================================================== --- gcc/testsuite/gfortran.dg/empty_label_typedecl.f90 (revision 0) +++ gcc/testsuite/gfortran.dg/empty_label_typedecl.f90 (working copy) @@ -0,0 +1,8 @@ +! { dg-do compile } +! { dg-options "-Werror" } +subroutine s + type t + 1 ! { dg-error "empty statement" } + end type +end subroutine +! { dg-excess-errors "warnings being treated as errors" }