aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteven G. Kargl <kargl@gcc.gnu.org>2018-12-09 04:02:44 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2018-12-09 04:02:44 +0000
commit094a0eccf9bbd33d452713192905a759f9ac27a9 (patch)
treec4608e0e677d6e76c92e0c9328a4573cde948783
parent36f972b713ddf335067475c954d2bed3173ceba9 (diff)
downloadgcc-094a0eccf9bbd33d452713192905a759f9ac27a9.zip
gcc-094a0eccf9bbd33d452713192905a759f9ac27a9.tar.gz
gcc-094a0eccf9bbd33d452713192905a759f9ac27a9.tar.bz2
20180-12-08 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/87945 * decl.c (var_element): Inquiry parameters cannit be data objects. 20180-12-08 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/87945 * gfortran.dg/pr87945_1.f90: New test. * gfortran.dg/pr87945_2.f90: New test. From-SVN: r266915
-rw-r--r--gcc/fortran/ChangeLog5
-rw-r--r--gcc/fortran/decl.c8
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gfortran.dg/pr87945_1.f907
-rw-r--r--gcc/testsuite/gfortran.dg/pr87945_2.f907
5 files changed, 33 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 4783724..8b6efd4 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,8 @@
+20180-12-08 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/87945
+ * decl.c (var_element): Inquiry parameters cannit be data objects.
+
2018-12-08 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/88025
diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c
index ac86798..6bc78cc 100644
--- a/gcc/fortran/decl.c
+++ b/gcc/fortran/decl.c
@@ -281,6 +281,14 @@ var_element (gfc_data_variable *new_var)
if (m != MATCH_YES)
return m;
+ if (new_var->expr->expr_type == EXPR_CONSTANT
+ && new_var->expr->symtree == NULL)
+ {
+ gfc_error ("Inquiry parameter cannot appear in a "
+ "data-stmt-object-list at %C");
+ return MATCH_ERROR;
+ }
+
sym = new_var->expr->symtree->n.sym;
/* Symbol should already have an associated type. */
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 28a3e7d..bd3af9e 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+20180-12-08 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/87945
+ * gfortran.dg/pr87945_1.f90: New test.
+ * gfortran.dg/pr87945_2.f90: New test.
+
2018-12-08 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/88025
diff --git a/gcc/testsuite/gfortran.dg/pr87945_1.f90 b/gcc/testsuite/gfortran.dg/pr87945_1.f90
new file mode 100644
index 0000000..261312b
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr87945_1.f90
@@ -0,0 +1,7 @@
+! { dg-do compile }
+! PR fortran/87945
+program p
+ character :: a, b
+ data a%len /1/ ! { dg-error "parameter cannot appear in" }
+ data b%kind /'b'/ ! { dg-error "parameter cannot appear in" }
+end
diff --git a/gcc/testsuite/gfortran.dg/pr87945_2.f90 b/gcc/testsuite/gfortran.dg/pr87945_2.f90
new file mode 100644
index 0000000..952772d
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr87945_2.f90
@@ -0,0 +1,7 @@
+! { dg-do compile }
+! PR fortran/87945
+program p
+ character :: a, b
+ a%len = 1 ! { dg-error "to a constant expression" }
+ b%kind = 'b' ! { dg-error "to a constant expression" }
+end