I plan to commit the following patch on Saturday if no one objects in the next 40 or so hours.
2016-08-25 Steven G. Kargl <ka...@gcc.gnu.org> PR fortran/77372 simplify.c (simplify_ieee_selected_real_kind): Check for NULL pointers. 2016-08-25 Steven G. Kargl <ka...@gcc.gnu.org> PR fortran/77372 gfortran.dg/pr77372.f90: New test. Index: gcc/fortran/simplify.c =================================================================== --- gcc/fortran/simplify.c (revision 239762) +++ gcc/fortran/simplify.c (working copy) @@ -7044,9 +7044,19 @@ gfc_simplify_compiler_version (void) gfc_expr * simplify_ieee_selected_real_kind (gfc_expr *expr) { - gfc_actual_arglist *arg = expr->value.function.actual; - gfc_expr *p = arg->expr, *q = arg->next->expr, - *rdx = arg->next->next->expr; + gfc_actual_arglist *arg; + gfc_expr *p = NULL, *q = NULL, *rdx = NULL; + + arg = expr->value.function.actual; + if (arg->expr) + p = arg->expr; + if (arg->next) + { + if (arg->next->expr) + q = arg->next->expr; + if (arg->next->next && arg->next->next->expr) + rdx = arg->next->next->expr; + } /* Currently, if IEEE is supported and this module is built, it means all our floating-point types conform to IEEE. Hence, we simply handle Index: gcc/testsuite/gfortran.dg/pr77372.f90 =================================================================== --- gcc/testsuite/gfortran.dg/pr77372.f90 (nonexistent) +++ gcc/testsuite/gfortran.dg/pr77372.f90 (working copy) @@ -0,0 +1,7 @@ +! { dg-do compile } +program p + use ieee_arithmetic + real(kind=ieee_selected_real_kind(10_1)) :: z1 + real(kind=ieee_selected_real_kind(10_2)) :: z2 + real(kind=ieee_selected_real_kind(10_4)) :: z4 +end -- Steve