From: Janus Weil Date: Sun, 9 Mar 2014 18:44:42 +0000 (+0100) Subject: backport: re PR fortran/60450 (ICE with SHAPE intrinsic) X-Git-Tag: releases/gcc-4.7.4~208 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=390af7c6d7b99d3bd2b3ab9103cdc15d6c161674;p=thirdparty%2Fgcc.git backport: re PR fortran/60450 (ICE with SHAPE intrinsic) 2014-03-09 Janus Weil Backport from 4.8 2014-03-08 Janus Weil PR fortran/60450 * simplify.c (gfc_simplify_shape): Only clear shape if it was really created successfully. 2014-03-09 Janus Weil Backport from 4.8 2014-03-08 Janus Weil PR fortran/60450 * gfortran.dg/shape_8.f90: New. From-SVN: r208443 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 2763fb223f0d..928e0397d93e 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,12 @@ +2014-03-09 Janus Weil + + Backport from 4.8 + 2014-03-08 Janus Weil + + PR fortran/60450 + * simplify.c (gfc_simplify_shape): Only clear shape if it was really + created successfully. + 2014-03-02 Mikael Morin PR fortran/60341 diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c index 515528d489b9..c9fd122f6e38 100644 --- a/gcc/fortran/simplify.c +++ b/gcc/fortran/simplify.c @@ -5518,7 +5518,7 @@ gfc_simplify_shape (gfc_expr *source, gfc_expr *kind) if (e == &gfc_bad_expr || range_check (e, "SHAPE") == &gfc_bad_expr) { gfc_free_expr (result); - if (t) + if (t == SUCCESS) gfc_clear_shape (shape, source->rank); return &gfc_bad_expr; } @@ -5526,7 +5526,7 @@ gfc_simplify_shape (gfc_expr *source, gfc_expr *kind) gfc_constructor_append_expr (&result->value.constructor, e, NULL); } - if (t) + if (t == SUCCESS) gfc_clear_shape (shape, source->rank); return result; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b2e4e614bcad..0058553c2944 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2014-03-09 Janus Weil + + Backport from 4.8 + 2014-03-08 Janus Weil + + PR fortran/60450 + * gfortran.dg/shape_8.f90: New. + 2014-03-02 Mikael Morin PR fortran/60341 diff --git a/gcc/testsuite/gfortran.dg/shape_8.f90 b/gcc/testsuite/gfortran.dg/shape_8.f90 new file mode 100644 index 000000000000..edeb5fd8e932 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/shape_8.f90 @@ -0,0 +1,10 @@ +! { dg-do compile } +! +! PR 60450: [4.7/4.8 Regression] ICE with SHAPE intrinsic +! +! Contributed by Dave Allured + + real, allocatable :: x(:,:) + allocate (x(3,2), source=99.) + print *, shape (x / 10.0) +end