[gcc(refs/users/marxin/heads/slp-function-v9)] Fortran : Bogus error with additional blanks in type(*) PR95829

Martin Liska marxin@gcc.gnu.org
Wed Jul 1 11:49:14 GMT 2020


https://gcc.gnu.org/g:624e60f080989fa57756575a0bb47a97748b52b8

commit 624e60f080989fa57756575a0bb47a97748b52b8
Author: Mark Eggleston <markeggleston@gcc.gnu.org>
Date:   Tue Jun 23 11:01:28 2020 +0100

    Fortran  : Bogus error with additional blanks in type(*) PR95829
    
    Checking for "* ) " instead of "*)" clears the bogus error.
    
    2020-07-01  Steven G. Kargl  <kargl@gcc.gnu.org>
    
    gcc/fortran/
    
            PR fortran/95829
            * decl.c (gfc_match_decl_type_spec): Compare with "* ) " instead
            of "*)".
    
    2020-07-01  Mark Eggleston  <markeggleston@gcc.gnu.org>
    
    gcc/testsuite/
    
            PR fortran/95829
            * gfortran.dg/pr95829.f90: New test.

Diff:
---
 gcc/fortran/decl.c                    |  2 +-
 gcc/testsuite/gfortran.dg/pr95829.f90 | 14 ++++++++++++++
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c
index f38def4c291..e16b96f6a49 100644
--- a/gcc/fortran/decl.c
+++ b/gcc/fortran/decl.c
@@ -4128,7 +4128,7 @@ gfc_match_decl_type_spec (gfc_typespec *ts, int implicit_flag)
       gfc_gobble_whitespace ();
       if (gfc_peek_ascii_char () == '*')
 	{
-	  if ((m = gfc_match ("*)")) != MATCH_YES)
+	  if ((m = gfc_match ("* ) ")) != MATCH_YES)
 	    return m;
 	  if (gfc_comp_struct (gfc_current_state ()))
 	    {
diff --git a/gcc/testsuite/gfortran.dg/pr95829.f90 b/gcc/testsuite/gfortran.dg/pr95829.f90
new file mode 100644
index 00000000000..081d647c7c0
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr95829.f90
@@ -0,0 +1,14 @@
+! { dg-do compile }
+!
+! Declaration of b used to be a bogus failure.
+
+subroutine s (a, b, c, d, e, f, g)
+  type(*) :: a
+  type(* ) :: b
+  type( *) :: c
+  type( * ) :: d
+  type(*  ) :: e
+  type(  *) :: f
+  type(  *  ) :: g
+end
+


More information about the Gcc-cvs mailing list