[gcc/devel/gccgo] Fortran : ICE in gfc_check_reshape PR95585

Ian Lance Taylor ian@gcc.gnu.org
Sun Jul 12 19:57:36 GMT 2020


https://gcc.gnu.org/g:d9aed5f1ccffc019ddf980e349caa3d092755cb4

commit d9aed5f1ccffc019ddf980e349caa3d092755cb4
Author: Mark Eggleston <markeggleston@gcc.gnu.org>
Date:   Thu Jun 11 06:42:36 2020 +0100

    Fortran  : ICE in gfc_check_reshape PR95585
    
    Issue an error where an array is used before its definition
    instead of an ICE.
    
    2020-06-22  Steven G. Kargl  <kargl@gcc.gnu.org>
    
    gcc/fortran/
    
            PR fortran/95585
            * check.c (gfc_check_reshape): Add check for a value when
            the symbol has an attribute flavor FL_PARAMETER.
    
    2020-06-22  Mark Eggleston  <markeggleston@gcc.gnu.org>
    
    gcc/testsuite/
    
            PR fortran/95585
            * gfortran.dg/pr95585.f90: New test.

Diff:
---
 gcc/fortran/check.c                   | 3 ++-
 gcc/testsuite/gfortran.dg/pr95585.f90 | 6 ++++++
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c
index 9c9552404f3..de9a45fe4f9 100644
--- a/gcc/fortran/check.c
+++ b/gcc/fortran/check.c
@@ -4742,7 +4742,8 @@ gfc_check_reshape (gfc_expr *source, gfc_expr *shape,
 	   && shape->ref->u.ar.as->lower[0]->ts.type == BT_INTEGER
 	   && shape->ref->u.ar.as->upper[0]->expr_type == EXPR_CONSTANT
 	   && shape->ref->u.ar.as->upper[0]->ts.type == BT_INTEGER
-	   && shape->symtree->n.sym->attr.flavor == FL_PARAMETER)
+	   && shape->symtree->n.sym->attr.flavor == FL_PARAMETER
+	   && shape->symtree->n.sym->value)
     {
       int i, extent;
       gfc_expr *e, *v;
diff --git a/gcc/testsuite/gfortran.dg/pr95585.f90 b/gcc/testsuite/gfortran.dg/pr95585.f90
new file mode 100644
index 00000000000..b0e6cdc5bea
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr95585.f90
@@ -0,0 +1,6 @@
+! { dg-do compile }
+
+program test
+  integer, parameter :: a(2) = reshape([1, 2], a) ! { dg-error "before its definition" }
+end program
+


More information about the Gcc-cvs mailing list