PR fortran/34872
* parse.c (next_statement) : If ST_GET_FCN_CHARACTERISTICS is
seen, check for a statement label and, if present, delete it
and set the locus to the start of the statement.
2008-01-24 Paul Thomas <pault@gcc.gnu.org>
PR fortran/34872
* gfortran.dg/function_charlen_3.f: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@131777
138bc75d-0d04-0410-961f-
82ee72b054a4
+2008-01-24 Paul Thomas <pault@gcc.gnu.org>\r
+\r
+ PR fortran/34872\r
+ * parse.c (next_statement) : If ST_GET_FCN_CHARACTERISTICS is\r
+ seen, check for a statement label and, if present, delete it\r
+ and set the locus to the start of the statement.\r
+\r
2008-01-22 Paul Thomas <pault@gcc.gnu.org>
PR fortran/34875
next_statement (void)
{
gfc_statement st;
-
+ locus old_locus;
gfc_new_block = NULL;
for (;;)
if (gfc_define_undef_line ())
continue;
+ old_locus = gfc_current_locus;
+
st = (gfc_current_form == FORM_FIXED) ? next_fixed () : next_free ();
if (st != ST_NONE)
gfc_buffer_error (0);
+ if (st == ST_GET_FCN_CHARACTERISTICS && gfc_statement_label != NULL)
+ {
+ gfc_free_st_label (gfc_statement_label);
+ gfc_statement_label = NULL;
+ gfc_current_locus = old_locus;
+ }
+
if (st != ST_NONE)
check_statement_label (st);
+2008-01-24 Paul Thomas <pault@gcc.gnu.org>\r
+\r
+ PR fortran/34872\r
+ * gfortran.dg/function_charlen_3.f: New test.\r
+
2008-01-23 Michael Matz <matz@suse.de>
PR debug/34895
--- /dev/null
+C { dg-do compile }
+C Tests the fix for the regression PR34872, in which the re-matching of
+C the function declaration made a mess if the first executable statement
+C had a label.
+ CHARACTER FUNCTION s()
+ 10 CONTINUE
+ GOTO 10
+ s = ' '
+ END FUNCTION s
+
+ CHARACTER FUNCTION t()
+ 10 format ("q")
+ write (t, 10)
+ END FUNCTION t
+
+ character t
+ if (t() .ne. "q") call abort ()
+ end