Hello world, I committed the attached patch as obvious to trunk after regression testing. It fixes the regression in the test case by adding a NULL check to a pointer. Will commit to 4.9 soon.
Regards Thomas 2014-08-15 Thomas Koenig <tkoe...@gcc.gnu.org> PR fortran/62142 * trans-expr.c (is_runtime_conformable): Add NULL pointer check. 2014-08-15 Thomas Koenig <tkoe...@gcc.gnu.org> PR fortran/62142 * gfortran.dg/realloc_on_assign_24.f90: New test.
Index: trans-expr.c =================================================================== --- trans-expr.c (Revision 213778) +++ trans-expr.c (Arbeitskopie) @@ -7895,7 +7895,7 @@ is_runtime_conformable (gfc_expr *expr1, gfc_expr for (a = expr2->value.function.actual; a != NULL; a = a->next) { e1 = a->expr; - if (e1->rank > 0 && !is_runtime_conformable (expr1, e1)) + if (e1 && e1->rank > 0 && !is_runtime_conformable (expr1, e1)) return false; } return true; @@ -7906,7 +7906,7 @@ is_runtime_conformable (gfc_expr *expr1, gfc_expr for (a = expr2->value.function.actual; a != NULL; a = a->next) { e1 = a->expr; - if (e1->rank > 0 && !is_runtime_conformable (expr1, e1)) + if (e1 && e1->rank > 0 && !is_runtime_conformable (expr1, e1)) return false; } return true;
! { dg-do compile } ! PR 62142 - this used to segfault ! Original test case by OndÅej ÄertÃk . program test_segfault implicit none real, allocatable :: X(:) allocate (x(1)) x = 1. X = floor(X) end program