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
This commit is contained in:
parent
d82b58c2ac
commit
ae18bd76ae
4 changed files with 40 additions and 1 deletions
|
@ -1,3 +1,10 @@
|
|||
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);
|
||||
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
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
|
||||
|
|
18
gcc/testsuite/gfortran.dg/function_charlen_3.f
Normal file
18
gcc/testsuite/gfortran.dg/function_charlen_3.f
Normal file
|
@ -0,0 +1,18 @@
|
|||
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
|
Loading…
Add table
Reference in a new issue