From: Steven G. Kargl Date: Fri, 11 May 2018 18:33:05 +0000 (+0000) Subject: re PR fortran/85687 (ICE in gfc_sym_identifier, at fortran/trans-decl.c:351) X-Git-Tag: releases/gcc-6.5.0~330 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0f8f0bf8d3dbb42a13572db049ee9f9f088c744d;p=thirdparty%2Fgcc.git re PR fortran/85687 (ICE in gfc_sym_identifier, at fortran/trans-decl.c:351) 2018-05-11 Steven G. Kargl PR fortran/85687 Backport from trunk * check.c (gfc_check_rank): Check that the argument is a data object. 2018-05-11 Steven G. Kargl PR fortran/85687 Backport from trunk * gfortran.dg/pr85687.f90: new test. From-SVN: r260179 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index c430d70b70f1..38c5891c6415 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2018-05-11 Steven G. Kargl + + PR fortran/85687 + Backport from trunk + * check.c (gfc_check_rank): Check that the argument is a data object. + 2018-05-06 Andre Vehreschild PR fortran/85507 diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c index f7829db7a7d5..097f9834880d 100644 --- a/gcc/fortran/check.c +++ b/gcc/fortran/check.c @@ -3636,8 +3636,11 @@ gfc_check_rank (gfc_expr *a ATTRIBUTE_UNUSED) ? 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 d115026258ce..edfc2c4970fd 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2018-05-11 Steven G. Kargl + + PR fortran/85687 + Backport from trunk + * gfortran.dg/pr85687.f90: new test. + 2018-05-11 Kyrylo Tkachov PR target/83687 diff --git a/gcc/testsuite/gfortran.dg/pr85687.f90 b/gcc/testsuite/gfortran.dg/pr85687.f90 new file mode 100644 index 000000000000..03bc2119364c --- /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