This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[Committed] PR fortran/68566
- 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: Sat, 30 Jul 2016 16:02:18 -0700
- Subject: [Committed] PR fortran/68566
- Authentication-results: sourceware.org; auth=none
I've committed the following patch.
2016-07-30 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/68566
* check.c (gfc_check_reshape): Check for constant expression.
2016-07-30 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/68566
* gfortran.dg/pr68566.f90: new test.
Index: gcc/fortran/check.c
===================================================================
--- gcc/fortran/check.c (revision 238905)
+++ gcc/fortran/check.c (working copy)
@@ -3827,7 +3827,7 @@ gfc_check_reshape (gfc_expr *source, gfc
if (!type_check (order, 3, BT_INTEGER))
return false;
- if (order->expr_type == EXPR_ARRAY)
+ if (order->expr_type == EXPR_ARRAY && gfc_is_constant_expr (order))
{
int i, order_size, dim, perm[GFC_MAX_DIMENSIONS];
gfc_expr *e;
Index: gcc/testsuite/gfortran.dg/pr68566.f90
===================================================================
--- gcc/testsuite/gfortran.dg/pr68566.f90 (nonexistent)
+++ gcc/testsuite/gfortran.dg/pr68566.f90 (working copy)
@@ -0,0 +1,12 @@
+program p
+ character(len=20) s1, s2
+ integer, allocatable :: n(:)
+ n = [2,1]
+ s1 = '1 5 2 6 3 0 4 0'
+ write(s2,'(8(I0,1x))') reshape ([1,2,3,4,5,6], [2,4], [0,0], [2,1])
+ if (trim(s1) /= trim(s2)) call abort
+ write(s2,'(8(I0,1x))') reshape ([1,2,3,4,5,6], [2,4], [0,0], n)
+ if (trim(s1) /= trim(s2)) call abort
+ write(s2,'(8(I0,1x))') reshape ([1,2,3,4,5,6], [2,4], [0,0], [n])
+ if (trim(s1) /= trim(s2)) call abort
+end
--
Steve