+2011-08-18 Mikael Morin <mikael.morin@sfr.fr>
+
+ PR fortran/50071
+ * symbol.c (gfc_get_st_label): Use the derived type namespace when
+ we are parsing a derived type definition.
+
2011-08-18 Tobias Burnus <burnus@net-b.de>
PR fortran/18918
gfc_st_label *lp;
gfc_namespace *ns;
- /* Find the namespace of the scoping unit:
- If we're in a BLOCK construct, jump to the parent namespace. */
- ns = gfc_current_ns;
- while (ns->proc_name && ns->proc_name->attr.flavor == FL_LABEL)
- ns = ns->parent;
+ if (gfc_current_state () == COMP_DERIVED)
+ ns = gfc_current_block ()->f2k_derived;
+ else
+ {
+ /* Find the namespace of the scoping unit:
+ If we're in a BLOCK construct, jump to the parent namespace. */
+ ns = gfc_current_ns;
+ while (ns->proc_name && ns->proc_name->attr.flavor == FL_LABEL)
+ ns = ns->parent;
+ }
/* First see if the label is already in this namespace. */
lp = ns->st_labels;
+2011-08-18 Mikael Morin <mikael.morin@sfr.fr>
+
+ PR fortran/50071
+ * gfortran.dg/duplicate_labels_2.f: New test.
+
2011-08-18 Joseph Myers <joseph@codesourcery.com>
* gcc.dg/c1x-noreturn-1.c, gcc.dg/c1x-noreturn-2.c,
--- /dev/null
+! { dg-do compile }
+!
+! PR fortran/50071
+! Duplicate statement labels should not be rejected if they appear in
+! different scoping units
+!
+! Contributed by Vittorio Zecca <zeccav@gmail.com>
+
+c gfortran complains about duplicate statement labels
+c this is a legal program because types have their own scoping units
+c and you may have same labels in different scoping units,
+c as you may have same identifiers inside, like G.
+ type t1
+1 integer G
+ end type
+ type t2
+1 integer G
+ end type
+c this is legal
+ goto 1
+ print *,'bad'
+1 continue
+ print *,'good'
+ end
+