I've committed the following patch. tkoenig approved it
in bugzilla.
2016-08-25 Steven g. Kargl <[email protected]>
PR fortran/77351
* frontend-passes.c (remove_trim,combine_array_constructor): Check for
NULL pointer.
2016-08-25 Steven g. Kargl <[email protected]>
PR fortran/77351
* gfortran.dg/pr77351.f90: New test.
Index: gcc/fortran/frontend-passes.c
===================================================================
--- gcc/fortran/frontend-passes.c (revision 239762)
+++ gcc/fortran/frontend-passes.c (working copy)
@@ -1137,6 +1137,8 @@ remove_trim (gfc_expr *rhs)
bool ret;
ret = false;
+ if (!rhs)
+ return ret;
/* Check for a // b // trim(c). Looping is probably not
necessary because the parser usually generates
@@ -1274,6 +1276,9 @@ combine_array_constructor (gfc_expr *e)
op1 = e->value.op.op1;
op2 = e->value.op.op2;
+ if (!op1 || !op2)
+ return false;
+
if (op1->expr_type == EXPR_ARRAY && op2->rank == 0)
scalar_first = false;
else if (op2->expr_type == EXPR_ARRAY && op1->rank == 0)
Index: gcc/testsuite/gfortran.dg/pr77351.f90
===================================================================
--- gcc/testsuite/gfortran.dg/pr77351.f90 (nonexistent)
+++ gcc/testsuite/gfortran.dg/pr77351.f90 (working copy)
@@ -0,0 +1,6 @@
+! { dg-do compile }
+program p
+ integer :: z(4) = [1, 2, 3, 4]
+ print *, any(shape(z) /= [4,1]) ! { dg-error "shape for elemental binary" }
+end
+! { dg-excess-errors "operands are incommensurate" }
--
Steve