This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] PR fortran/87993 -- An array can have a kind type inquiry suffix
- From: Steve Kargl <sgk at troutmask dot apl dot washington dot edu>
- To: fortran at gcc dot gnu dot org, gcc-patches at gcc dot gnu dot org
- Date: Mon, 12 Aug 2019 17:35:39 -0700
- Subject: [PATCH] PR fortran/87993 -- An array can have a kind type inquiry suffix
- Reply-to: sgk at troutmask dot apl dot washington dot edu
The attached patch ahs been regression tested on x86_64-*-freebsd.
It probably borders on obvious, but I'll ask away. OK to commit?
2019-08-12 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/87993
* expr.c (gfc_simplify_expr): Simplifcation of an array with a kind
type inquiry suffix yields a constant expression.
2019-08-12 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/87993
* gfortran.dg/pr87993.f90: New test.
--
Steve
Index: gcc/fortran/expr.c
===================================================================
--- gcc/fortran/expr.c (revision 274320)
+++ gcc/fortran/expr.c (working copy)
@@ -2227,6 +2227,11 @@ gfc_simplify_expr (gfc_expr *p, int type)
if (!simplify_ref_chain (p->ref, type, &p))
return false;
+ /* If the following conditions hold, we found something like kind type
+ inquiry of the form a(2)%kind while simplify the ref chain. */
+ if (p->expr_type == EXPR_CONSTANT && !p->ref && !p->rank && !p->shape)
+ return true;
+
if (!simplify_constructor (p->value.constructor, type))
return false;
Index: gcc/testsuite/gfortran.dg/pr87993.f90
===================================================================
--- gcc/testsuite/gfortran.dg/pr87993.f90 (nonexistent)
+++ gcc/testsuite/gfortran.dg/pr87993.f90 (working copy)
@@ -0,0 +1,8 @@
+! { dg-do run }
+! Code contributed by Gerhard Steinmetz <gscfq at t-online dot de>
+program p
+ integer, parameter :: a(2) = 1
+ integer, parameter :: b = a%kind
+ if (any(a /= 1)) stop 1
+ if (b /= kind(a)) stop 2
+end