aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/parse.c
diff options
context:
space:
mode:
authorSteven G. Kargl <kargl@gcc.gnu.org>2015-09-25 22:28:04 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2015-09-25 22:28:04 +0000
commitb15e7bddd650b607dd3a392b738540a861aed2fe (patch)
treecd8d26ee1087aa34ae4c31ad5454adeaeb71bf91 /gcc/fortran/parse.c
parentf7697f9cd2b9ff62e51947cc21bfa531997a5e99 (diff)
downloadgcc-b15e7bddd650b607dd3a392b738540a861aed2fe.zip
gcc-b15e7bddd650b607dd3a392b738540a861aed2fe.tar.gz
gcc-b15e7bddd650b607dd3a392b738540a861aed2fe.tar.bz2
re PR fortran/67525 (ICE on select type with improper selector)
2015-09-25 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/67525 * parse.c (match_deferred_characteristics): Remove an assert, which allows an invalid SELECT TYPE selector to be detected. 2015-09-25 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/67525 * gfortran.dg/pr67525.f90: New test. From-SVN: r228155
Diffstat (limited to 'gcc/fortran/parse.c')
-rw-r--r--gcc/fortran/parse.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/gcc/fortran/parse.c b/gcc/fortran/parse.c
index 62bcb61..f8d84de 100644
--- a/gcc/fortran/parse.c
+++ b/gcc/fortran/parse.c
@@ -3113,15 +3113,18 @@ match_deferred_characteristics (gfc_typespec * ts)
static void
check_function_result_typed (void)
{
- gfc_typespec* ts = &gfc_current_ns->proc_name->result->ts;
+ gfc_typespec ts;
gcc_assert (gfc_current_state () == COMP_FUNCTION);
- gcc_assert (ts->type != BT_UNKNOWN);
+
+ if (!gfc_current_ns->proc_name->result) return;
+
+ ts = gfc_current_ns->proc_name->result->ts;
/* Check type-parameters, at the moment only CHARACTER lengths possible. */
/* TODO: Extend when KIND type parameters are implemented. */
- if (ts->type == BT_CHARACTER && ts->u.cl && ts->u.cl->length)
- gfc_expr_check_typed (ts->u.cl->length, gfc_current_ns, true);
+ if (ts.type == BT_CHARACTER && ts.u.cl && ts.u.cl->length)
+ gfc_expr_check_typed (ts.u.cl->length, gfc_current_ns, true);
}