diff options
author | Tobias Burnus <tobias@codesourcery.com> | 2020-04-02 11:16:17 +0200 |
---|---|---|
committer | Tobias Burnus <tobias@codesourcery.com> | 2020-04-02 11:16:17 +0200 |
commit | 224efaf7e1e9240b64602ea81a255cb43e4dcb0c (patch) | |
tree | 5c5197cae8944e67d0320e7acd7155f3bd4a408e | |
parent | b7a98f48e06974ffca184335ff598cf3475e478f (diff) | |
download | gcc-224efaf7e1e9240b64602ea81a255cb43e4dcb0c.zip gcc-224efaf7e1e9240b64602ea81a255cb43e4dcb0c.tar.gz gcc-224efaf7e1e9240b64602ea81a255cb43e4dcb0c.tar.bz2 |
[Fortran] Fix error cleanup of select rank (PR93522)
PR fortran/93522
* match.c (gfc_match_select_rank): Fix error cleanup.
PR fortran/93522
* gfortran.dg/select_rank_4.f90: New.
-rw-r--r-- | gcc/fortran/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/fortran/match.c | 1 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/select_rank_4.f90 | 26 |
4 files changed, 37 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 89de9d0..c4ca48f 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2020-04-02 Tobias Burnus <tobias@codesourcery.com> + + PR fortran/93522 + * match.c (gfc_match_select_rank): Fix error cleanup. + 2020-04-02 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/93498 diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c index 8443d20..8ae34a9 100644 --- a/gcc/fortran/match.c +++ b/gcc/fortran/match.c @@ -6678,6 +6678,7 @@ gfc_match_select_rank (void) if (m != MATCH_YES) { + gfc_undo_symbols (); std::swap (ns, gfc_current_ns); gfc_free_namespace (ns); return m; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ac1695f..a154849 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2020-04-02 Tobias Burnus <tobias@codesourcery.com> + + PR fortran/93522 + * gfortran.dg/select_rank_4.f90: New. + 2020-04-02 Mark Eggleston <mark.eggleston@codethink.com> PR fortran/93498 diff --git a/gcc/testsuite/gfortran.dg/select_rank_4.f90 b/gcc/testsuite/gfortran.dg/select_rank_4.f90 new file mode 100644 index 0000000..e670705 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/select_rank_4.f90 @@ -0,0 +1,26 @@ +! { dg-do compile } +! +! PR fortran/93522 +! +! Contributed by Shubham Narlawar + +program rank_new + implicit none + integer :: some_var_assumed + integer, DIMENSION(3,2,1) :: array + PRINT *, RANK(array) + call CALL_ME(array) + contains +!No error expected + subroutine CALL_ME23(x) + implicit none + integer:: x(..), a=10,b=20 + integer, dimension(10) :: arr = (/1,2,3,4,5/) ! { dg-error "Different shape for array assignment at .1. on dimension 1 .10 and 5." } + select rank(arr(1:3)) ! { dg-error "Syntax error in argument list" } + RANK(1) ! { dg-error "Unexpected RANK statement" } + print *, "1" + rank(2) ! { dg-error "Unexpected RANK statement" } + print *, "2" + end select ! { dg-error "Expecting END SUBROUTINE statement" } + end subroutine +end program |