From 094a0eccf9bbd33d452713192905a759f9ac27a9 Mon Sep 17 00:00:00 2001 From: "Steven G. Kargl" Date: Sun, 9 Dec 2018 04:02:44 +0000 Subject: [PATCH] 20180-12-08 Steven G. Kargl PR fortran/87945 * decl.c (var_element): Inquiry parameters cannit be data objects. 20180-12-08 Steven G. Kargl PR fortran/87945 * gfortran.dg/pr87945_1.f90: New test. * gfortran.dg/pr87945_2.f90: New test. From-SVN: r266915 --- gcc/fortran/ChangeLog | 5 +++++ gcc/fortran/decl.c | 8 ++++++++ gcc/testsuite/ChangeLog | 6 ++++++ gcc/testsuite/gfortran.dg/pr87945_1.f90 | 7 +++++++ gcc/testsuite/gfortran.dg/pr87945_2.f90 | 7 +++++++ 5 files changed, 33 insertions(+) create mode 100644 gcc/testsuite/gfortran.dg/pr87945_1.f90 create mode 100644 gcc/testsuite/gfortran.dg/pr87945_2.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 478372432561..8b6efd4f9d78 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +20180-12-08 Steven G. Kargl + + PR fortran/87945 + * decl.c (var_element): Inquiry parameters cannit be data objects. + 2018-12-08 Steven G. Kargl PR fortran/88025 diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index ac8679886afb..6bc78cc9f54a 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 28a3e7db440c..bd3af9e82ee5 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +20180-12-08 Steven G. Kargl + + PR fortran/87945 + * gfortran.dg/pr87945_1.f90: New test. + * gfortran.dg/pr87945_2.f90: New test. + 2018-12-08 Steven G. Kargl 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 000000000000..261312bdef14 --- /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 000000000000..952772ddc038 --- /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 -- 2.47.2