The attached patch has been built and tested on x86_64-*-freebsd.
It implements a check for validate kinds in type declarations
of the form REAL*42.

OK to commit?

2015-10-23  Steven G. Kargl  <ka...@gcc.gnu.org>

        PR fortran/68055
        * decl.c (gfc_match_decl_type_spec): Check for valid kind in old-style
        declarations.

2015-10-23  Steven G. Kargl  <ka...@gcc.gnu.org>

        PR fortran/68055
        * gfortran.dg/pr68055.f90: New case.
-- 
Steve
Index: gcc/fortran/decl.c
===================================================================
--- gcc/fortran/decl.c	(revision 229265)
+++ gcc/fortran/decl.c	(working copy) 
@@ -2998,7 +3021,11 @@ get_kind:
 
   m = gfc_match_kind_spec (ts, false);
   if (m == MATCH_NO && ts->type != BT_CHARACTER)
-    m = gfc_match_old_kind_spec (ts);
+    {
+      m = gfc_match_old_kind_spec (ts);
+      if (gfc_validate_kind (ts->type, ts->kind, true) == -1)
+         return MATCH_ERROR;
+    }
 
   if (matched_type && gfc_match_char (')') != MATCH_YES)
     return MATCH_ERROR;
Index: gcc/testsuite/gfortran.dg/pr68055.f90
===================================================================
--- gcc/testsuite/gfortran.dg/pr68055.f90	(revision 0)
+++ gcc/testsuite/gfortran.dg/pr68055.f90	(working copy)
@@ -0,0 +1,13 @@
+! { dg-do compile }
+! PR fortran/68055
+! Original code contributed by Gerhard Steinmetz
+! gerhard dot steinmetz dot fortran at t-online dot de
+! 
+   integer*3 c    ! { dg-error "not supported at" }
+   real*9 x       ! { dg-error "not supported at" }
+   logical*11 a   ! { dg-error "not supported at" }
+   complex*42 z   ! { dg-error "not supported at" }
+   c = 1
+   x = 1
+   call foo(a)
+end

Reply via email to