diff options
author | burnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-06-06 21:09:57 +0000 |
---|---|---|
committer | burnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-06-06 21:09:57 +0000 |
commit | c77b5b3cc40d2b9aa323b95f21a9d12eb1ec5b3a (patch) | |
tree | 6461a1a3ba9b0a3a1a595f3cf0693b8f544bb7a7 /gcc | |
parent | 37a44ee4ffbeffe7acea29c40a33259df3569fa0 (diff) | |
download | gcc-c77b5b3cc40d2b9aa323b95f21a9d12eb1ec5b3a.tar.gz |
2009-06-06 Daniel Franke <franke.daniel@gmail.com>
PR fortran/37203
* simplify.c (gfc_simplify_reshape): Fixed reshaping of empty
* arrays
without padding.
2009-06-06 Daniel Franke <franke.daniel@gmail.com>
PR fortran/37203
* reshape_zerosize_2.f90: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@148238 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/simplify.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/reshape_zerosize_2.f90 | 11 |
4 files changed, 23 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index b50949f7579..711367a3e1e 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,5 +1,11 @@ 2009-06-06 Daniel Franke <franke.daniel@gmail.com> + PR fortran/37203 + * simplify.c (gfc_simplify_reshape): Fixed reshaping of empty arrays + without padding. + +2009-06-06 Daniel Franke <franke.daniel@gmail.com> + PR fortran/32890 * intrinsic.h (gfc_simplify_pack): New prototype. * intrinsic.c (add_functions): Added diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c index 09cf2978188..737f299cc88 100644 --- a/gcc/fortran/simplify.c +++ b/gcc/fortran/simplify.c @@ -3808,7 +3808,7 @@ gfc_simplify_reshape (gfc_expr *source, gfc_expr *shape_exp, for (i = 0; i < rank; i++) x[i] = 0; - for (;;) + while (nsource > 0 || npad > 0) { /* Figure out which element to extract. */ mpz_set_ui (index, 0); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ca9f04fc03d..6b87e85c1ed 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2009-06-06 Daniel Franke <franke.daniel@gmail.com> + PR fortran/37203 + * reshape_zerosize_2.f90: New. + +2009-06-06 Daniel Franke <franke.daniel@gmail.com> + PR fortran/32890 * gfortran.dg/pack_assign_1.f90: New. * gfortran.dg/pack_vector_1.f90: New. diff --git a/gcc/testsuite/gfortran.dg/reshape_zerosize_2.f90 b/gcc/testsuite/gfortran.dg/reshape_zerosize_2.f90 new file mode 100644 index 00000000000..cdbee42aa6c --- /dev/null +++ b/gcc/testsuite/gfortran.dg/reshape_zerosize_2.f90 @@ -0,0 +1,11 @@ +! { dg-do "run" } + + ! Simplifier of RESHAPE was broken when reshaping an empty array. + INTEGER, PARAMETER :: empty(0,0) = RESHAPE(SHAPE(1), (/0, 0/)) + + ! same with surplus padding + INTEGER, PARAMETER :: empty_padding(0,0) = RESHAPE(SHAPE(1), (/0, 0/), PAD=( (/ 1, 2 /) )) + + ! same with required padding + INTEGER, PARAMETER :: non_empty(2,2) = RESHAPE(SHAPE(1), (/2, 2/), PAD=( (/ 1, 2 /) )) +END |