2013-02-06 Janus Weil PR fortran/55978 * runtime/in_pack_generic.c (internal_pack): Return if base_addr is NULL. * gfortran.dg/class_optional_2.f90: Uncomment some cases which work now. --- libgfortran/runtime/in_pack_generic.c (revision 195800) +++ libgfortran/runtime/in_pack_generic.c (working copy) @@ -48,6 +48,9 @@ internal_pack (gfc_array_char * source) index_type size; index_type type_size; + if (source->base_addr == NULL) + return NULL; + type_size = GFC_DTYPE_TYPE_SIZE(source); size = GFC_DESCRIPTOR_SIZE (source); switch (type_size) --- gcc/testsuite/gfortran.dg/class_optional_2.f90 (revision 195800) +++ gcc/testsuite/gfortran.dg/class_optional_2.f90 (working copy) @@ -3,7 +3,7 @@ ! ! PR fortran/50981 ! PR fortran/54618 -! +! PR fortran/55978 implicit none type t @@ -547,7 +547,7 @@ contains ! call s2elem(z5) ! FIXME: Segfault ! call s2elem_t(x) ! FIXME: Conditional jump or move depends on uninitialised value ! call s2elem_t(y) ! FIXME: Conditional jump or move depends on uninitialised value -! call s2elem_t(z) ! FIXME: Conditional jump or move depends on uninitialised value + call s2elem_t(z) ! call s2elem_t(z2) ! FIXME: Segfault ! call s2elem_t(z3) ! FIXME: Segfault ! call s2elem_t(z4) ! FIXME: Segfault @@ -590,7 +590,7 @@ contains ! call s2elem(z5) ! FIXME: Segfault ! call s2elem_t2(x) ! FIXME: Conditional jump or move depends on uninitialised value ! call s2elem_t2(y) ! FIXME: Conditional jump or move depends on uninitialised value -! call s2elem_t2(z) ! FIXME: Conditional jump or move depends on uninitialised value + call s2elem_t2(z) ! call s2elem_t2(z2) ! FIXME: Segfault ! call s2elem_t2(z3) ! FIXME: Segfault ! call s2elem_t2(z4) ! FIXME: Segfault