diff options
author | Steven G. Kargl <kargl@gcc.gnu.org> | 2018-05-10 22:49:44 +0000 |
---|---|---|
committer | Steven G. Kargl <kargl@gcc.gnu.org> | 2018-05-10 22:49:44 +0000 |
commit | 9724eac36ac38dc3eb0fdc8547eb77af8e8a2fdf (patch) | |
tree | 65972919159af9fb64420eb6a480e1dff30a53a3 /gcc | |
parent | aa90c676b36ca5590e58f09cf3e256ac037aa9c3 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/fortran/check.c | 7 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr85687.f90 | 8 |
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 |