Please find a fix for PR95829. Original patch by Steve Kargl posted to PR.
Commit to master and backport? Commit message: Fortran : Bogus error with additional blanks in type(*) PR95829 Checking for "* ) " instead of "*)" clears the bogus error. 2020-06-24 Steven G. Kargl <ka...@gcc.gnu.org> gcc/fortran/ PR fortran/95829 * decl.c (gfc_match_decl_type_spec): Compare with "* ) " instead of "*)". 2020-06-24 Mark Eggleston <markeggles...@gcc.gnu.org> gcc/testsuite/ PR fortran/95829 * gfortran.dg/pr95829.f90: New test. -- https://www.codethink.co.uk/privacy.html
>From 1da0ff935d819e7bdbac5219ccb7b30d70c6e87c Mon Sep 17 00:00:00 2001 From: Mark Eggleston <markeggles...@gcc.gnu.org> Date: Tue, 23 Jun 2020 11:01:28 +0100 Subject: [PATCH] Fortran : Bogus error with additional blanks in type(*) PR95829 Checking for "* ) " instead of "*)" clears the bogus error. 2020-06-24 Steven G. Kargl <ka...@gcc.gnu.org> gcc/fortran/ PR fortran/95829 * decl.c (gfc_match_decl_type_spec): Compare with "* ) " instead of "*)". 2020-06-24 Mark Eggleston <markeggles...@gcc.gnu.org> gcc/testsuite/ PR fortran/95829 * gfortran.dg/pr95829.f90: New test. --- gcc/fortran/decl.c | 2 +- gcc/testsuite/gfortran.dg/pr95829.f90 | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/pr95829.f90 diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index c27cfacf2e4..0659cae3175 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..9ac3c1d5344 --- /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 + -- 2.11.0