diff options
author | Tobias Schlüter <tobias.schlueter@physik.uni-muenchen.de> | 2004-12-15 19:55:57 +0100 |
---|---|---|
committer | Tobias Schlüter <tobi@gcc.gnu.org> | 2004-12-15 19:55:57 +0100 |
commit | 172b87995cadacf87ba6ce1517b8a49acc3db0ae (patch) | |
tree | 25d335815082aad2eeacd0769e1dfa8b999b1d25 /gcc | |
parent | 7cbeffe2fb5a19ce1ae22e1a1e5654eb951ce901 (diff) | |
download | gcc-172b87995cadacf87ba6ce1517b8a49acc3db0ae.zip gcc-172b87995cadacf87ba6ce1517b8a49acc3db0ae.tar.gz gcc-172b87995cadacf87ba6ce1517b8a49acc3db0ae.tar.bz2 |
re PR fortran/18993 (incorrect parsing in fixed-form)
fortran/
PR fortran/18993
* match.c (gfc_match_if): Don't explicitly skip optional whitespace.
(gfc_match_nullify): Make sure that ')' is in front of the end of
statement.
testsuite/
PR fortran/18993
* gfotran.dg/nullify_1.f: New test.
From-SVN: r92209
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/fortran/match.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/nullify_1.f | 11 |
4 files changed, 25 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index b701dc9..e3b2255 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,10 @@ +2004-12-15 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de> + + PR fortran/18993 + * match.c (gfc_match_if): Don't explicitly skip optional whitespace. + (gfc_match_nullify): Make sure that ')' is in front of the end of + statement. + 2004-12-14 Richard Henderson <rth@redhat.com> * gfortran.h (gfc_expr.function.name): Make const. diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c index cf0c255..825120f 100644 --- a/gcc/fortran/match.c +++ b/gcc/fortran/match.c @@ -974,7 +974,7 @@ gfc_match_if (gfc_statement * if_type) return MATCH_YES; } - if (gfc_match (" then %t") == MATCH_YES) + if (gfc_match (" then%t") == MATCH_YES) { new_st.op = EXEC_IF; new_st.expr = expr; @@ -1822,7 +1822,7 @@ gfc_match_nullify (void) tail->expr = p; tail->expr2 = e; - if (gfc_match_char (')') == MATCH_YES) + if (gfc_match (" )%t") == MATCH_YES) break; if (gfc_match_char (',') != MATCH_YES) goto syntax; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 449213d..58d4e78 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2004-12-15 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de> + + PR fortran/18993 + * gfotran.dg/nullify_1.f: New test. + 2004-12-15 Richard Henderson <rth@redhat.com> * gcc.target/i386/i386.exp: New harness. diff --git a/gcc/testsuite/gfortran.dg/nullify_1.f b/gcc/testsuite/gfortran.dg/nullify_1.f new file mode 100644 index 0000000..abf68c9 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/nullify_1.f @@ -0,0 +1,11 @@ +C { dg-do compile } +C PR 18993 +C we didn't match the end of statement following NULLIFY () +C this lead to weird error messages + subroutine ordern( ) + real, pointer :: aux(:,:) +C Nullify pointers + nullify(aux) +C Set default sizes for order N arrays + end subroutine ordern + |