aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHarald Anlauf <anlauf@gmx.de>2020-07-08 20:53:12 +0200
committerHarald Anlauf <anlauf@gmx.de>2020-07-08 20:53:12 +0200
commit1fa08dcac686ca5b6d84e64c9f5813daef59f540 (patch)
treedba8a62501696694d765d85ceaaaf2974b6e3e1c
parent1f0d61455710c65cf69488022a0f3a257e3997dd (diff)
downloadgcc-1fa08dcac686ca5b6d84e64c9f5813daef59f540.zip
gcc-1fa08dcac686ca5b6d84e64c9f5813daef59f540.tar.gz
gcc-1fa08dcac686ca5b6d84e64c9f5813daef59f540.tar.bz2
PR fortran/96085 - ICE in gfc_finish_var_decl, at fortran/trans-decl.c:694
Legacy ASSIGN requires a scalar integer variable. Reject parameter arguments. gcc/fortran/ PR fortran/96085 * resolve.c (gfc_resolve_code): Check whether assign target is a parameter.
-rw-r--r--gcc/fortran/resolve.c1
-rw-r--r--gcc/testsuite/gfortran.dg/pr96085.f9012
2 files changed, 13 insertions, 0 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index 223dccc..6bc1c46 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -11900,6 +11900,7 @@ start:
|| code->expr1->symtree->n.sym->ts.type != BT_INTEGER
|| code->expr1->symtree->n.sym->ts.kind
!= gfc_default_integer_kind
+ || code->expr1->symtree->n.sym->attr.flavor == FL_PARAMETER
|| code->expr1->symtree->n.sym->as != NULL))
gfc_error ("ASSIGN statement at %L requires a scalar "
"default INTEGER variable", &code->expr1->where);
diff --git a/gcc/testsuite/gfortran.dg/pr96085.f90 b/gcc/testsuite/gfortran.dg/pr96085.f90
new file mode 100644
index 0000000..82b1cde
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr96085.f90
@@ -0,0 +1,12 @@
+! { dg-do compile }
+! { dg-options "-std=legacy" }
+! PR fortran/96085 - ICE in gfc_finish_var_decl, at fortran/trans-decl.c:694
+
+module m
+ integer, parameter :: a = 1
+contains
+ subroutine s
+ assign 2 to a ! { dg-error "requires a scalar default INTEGER variable" }
+2 print *, a
+ end
+end