Commit ae18bd76 by Paul Thomas

re PR fortran/34872 (Spurious error in snapshot of 01/18/08: Statement at (1) is…

re PR fortran/34872 (Spurious error in snapshot of 01/18/08: Statement at (1) is not a valid branch target statement for the branch statement at (2))

2008-01-24  Paul Thomas  <pault@gcc.gnu.org>

	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.

From-SVN: r131777
parent d82b58c2
2008-01-24 Paul Thomas <pault@gcc.gnu.org>
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-22 Paul Thomas <pault@gcc.gnu.org>
PR fortran/34875
......
......@@ -795,7 +795,7 @@ static gfc_statement
next_statement (void)
{
gfc_statement st;
locus old_locus;
gfc_new_block = NULL;
for (;;)
......@@ -824,6 +824,8 @@ next_statement (void)
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)
......@@ -832,6 +834,13 @@ next_statement (void)
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>
PR fortran/34872
* gfortran.dg/function_charlen_3.f: New test.
2008-01-23 Michael Matz <matz@suse.de>
PR debug/34895
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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment