From c362c6741d4511d76d00b3c7c732838539c11a75 Mon Sep 17 00:00:00 2001 From: Janus Weil Date: Wed, 6 Feb 2013 20:39:35 +0100 Subject: [PATCH] re PR fortran/55978 (class_optional_2.f90 -Os fails) 2013-02-06 Janus Weil PR fortran/55978 * runtime/in_pack_generic.c (internal_pack): Return if base_addr is NULL. 2013-02-06 Janus Weil PR fortran/55978 * gfortran.dg/class_optional_2.f90: Uncomment some cases which work now. From-SVN: r195814 --- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/class_optional_2.f90 | 6 +++--- libgfortran/ChangeLog | 6 ++++++ libgfortran/runtime/in_pack_generic.c | 3 +++ 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a2a2bb9515d0..fd5146fa7b4b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-02-06 Janus Weil + + PR fortran/55978 + * gfortran.dg/class_optional_2.f90: Uncomment some cases which work now. + 2013-02-06 Jakub Jelinek PR middle-end/56217 diff --git a/gcc/testsuite/gfortran.dg/class_optional_2.f90 b/gcc/testsuite/gfortran.dg/class_optional_2.f90 index 90b1719c117c..3472eaa9735c 100644 --- a/gcc/testsuite/gfortran.dg/class_optional_2.f90 +++ b/gcc/testsuite/gfortran.dg/class_optional_2.f90 @@ -3,7 +3,7 @@ ! ! PR fortran/50981 ! PR fortran/54618 -! +! PR fortran/55978 implicit none type t @@ -547,7 +547,7 @@ subroutine a3a1(z, z2, z3, z4, z5) ! 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 @@ subroutine a3a(z, z2, z3) ! 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 diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index d4ccff4f2a6b..1a42a8449a93 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,9 @@ +2013-02-06 Janus Weil + + PR fortran/55978 + * runtime/in_pack_generic.c (internal_pack): Return if base_addr is + NULL. + 2013-01-23 Janne Blomqvist * io/file_pos.c (unformatted_backspace): Use __builtin_bswapXX diff --git a/libgfortran/runtime/in_pack_generic.c b/libgfortran/runtime/in_pack_generic.c index 34b55033caf6..330f0f425db0 100644 --- a/libgfortran/runtime/in_pack_generic.c +++ b/libgfortran/runtime/in_pack_generic.c @@ -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)