gcc/fortran/ChangeLog:
PR fortran/104210
* arith.cc (eval_intrinsic): Avoid NULL pointer dereference.
(gfc_zero_size_array): Likewise.
gcc/testsuite/ChangeLog:
PR fortran/104210
* gfortran.dg/pr104210.f90: New test.
int unary;
arith rc;
+ if (!op1)
+ return NULL;
+
gfc_clear_ts (&temp.ts);
switch (op)
/* Return nonzero if the expression is a zero size array. */
-static int
+static bool
gfc_zero_size_array (gfc_expr *e)
{
- if (e->expr_type != EXPR_ARRAY)
- return 0;
+ if (e == NULL || e->expr_type != EXPR_ARRAY)
+ return false;
return e->value.constructor == NULL;
}
--- /dev/null
+! { dg-do compile }
+! { dg-options "-fcoarray=single" }
+! PR fortran/104210
+! Contributed by G.Steinmetz
+
+function f() ! { dg-error "shall not be a coarray" }
+ integer :: f[*]
+end
+program p
+ interface
+ function f() ! { dg-error "shall not be a coarray" }
+ integer :: f[*]
+ end
+ end interface
+end