aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorSteven G. Kargl <kargl@gcc.gnu.org>2018-05-10 22:49:44 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2018-05-10 22:49:44 +0000
commit9724eac36ac38dc3eb0fdc8547eb77af8e8a2fdf (patch)
tree65972919159af9fb64420eb6a480e1dff30a53a3 /gcc
parentaa90c676b36ca5590e58f09cf3e256ac037aa9c3 (diff)
downloadgcc-9724eac36ac38dc3eb0fdc8547eb77af8e8a2fdf.zip
gcc-9724eac36ac38dc3eb0fdc8547eb77af8e8a2fdf.tar.gz
gcc-9724eac36ac38dc3eb0fdc8547eb77af8e8a2fdf.tar.bz2
re PR fortran/85687 (ICE in gfc_sym_identifier, at fortran/trans-decl.c:351)
2018-05-10 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/85687 * check.c (gfc_check_rank): Check that the argument is a data object. 2018-05-10 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/85687 * gfortran.dg/pr85687.f90: new test. From-SVN: r260141
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog5
-rw-r--r--gcc/fortran/check.c7
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/pr85687.f908
4 files changed, 23 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 09d015c..03dbc62 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,5 +1,10 @@
2018-05-10 Steven G. Kargl <kargl@gcc.gnu.org>
+ PR fortran/85687
+ * check.c (gfc_check_rank): Check that the argument is a data object.
+
+2018-05-10 Steven G. Kargl <kargl@gcc.gnu.org>
+
PR fortran/85521
* array.c (gfc_resolve_character_array_constructor): Substrings
with upper bound smaller than lower bound are zero length strings.
diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c
index 61b72c1..052e326 100644
--- a/gcc/fortran/check.c
+++ b/gcc/fortran/check.c
@@ -3886,8 +3886,11 @@ gfc_check_rank (gfc_expr *a)
? a->value.function.esym->result->attr.pointer
: a->symtree->n.sym->result->attr.pointer;
- if (a->expr_type == EXPR_OP || a->expr_type == EXPR_NULL
- || a->expr_type == EXPR_COMPCALL|| a->expr_type == EXPR_PPC
+ if (a->expr_type == EXPR_OP
+ || a->expr_type == EXPR_NULL
+ || a->expr_type == EXPR_COMPCALL
+ || a->expr_type == EXPR_PPC
+ || a->ts.type == BT_PROCEDURE
|| !is_variable)
{
gfc_error ("The argument of the RANK intrinsic at %L must be a data "
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 73f74e0..bafd284 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2018-05-10 Steven G. Kargl <kargl@gcc.gnu.org>
+ PR fortran/85687
+ * gfortran.dg/pr85687.f90: new test.
+
+2018-05-10 Steven G. Kargl <kargl@gcc.gnu.org>
+
PR fortran/85521
* gfortran.dg/pr85521_1.f90: New test.
* gfortran.dg/pr85521_2.f90: New test.
diff --git a/gcc/testsuite/gfortran.dg/pr85687.f90 b/gcc/testsuite/gfortran.dg/pr85687.f90
new file mode 100644
index 0000000..03bc211
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr85687.f90
@@ -0,0 +1,8 @@
+! { dg-do compile }
+! PR fortran/85687
+! Code original contributed by Gerhard Steinmetz gscfq at t-oline dot de
+program p
+ type t
+ end type
+ print *, rank(t) ! { dg-error "must be a data object" }
+end