diff options
author | Paul Thomas <pault@gcc.gnu.org> | 2013-02-06 20:20:08 +0000 |
---|---|---|
committer | Paul Thomas <pault@gcc.gnu.org> | 2013-02-06 20:20:08 +0000 |
commit | d0c4e31020ff1f11fe4db2dd1f66f111d2078217 (patch) | |
tree | f118b59c3cb9e7f2b5f9c44077d02a4297f76ba1 /gcc | |
parent | c362c6741d4511d76d00b3c7c732838539c11a75 (diff) | |
download | gcc-d0c4e31020ff1f11fe4db2dd1f66f111d2078217.zip gcc-d0c4e31020ff1f11fe4db2dd1f66f111d2078217.tar.gz gcc-d0c4e31020ff1f11fe4db2dd1f66f111d2078217.tar.bz2 |
re PR fortran/55789 (Needless realloc with array constructor.)
2013-02-06 Paul Thomas <pault@gcc.gnu.org>
PR fortran/55789
* trans-array.c (trans_array_constructor): Remove condition
'dynamic' = true if the loop ubound is a VAR_DECL.
2013-02-06 Paul Thomas <pault@gcc.gnu.org>
PR fortran/55789
* gfortran.dg/array_constructor_41.f90: New test.
From-SVN: r195815
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/trans-array.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/array_constructor_41.f90 | 33 |
4 files changed, 44 insertions, 3 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index c22d3d9..90987da 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2013-02-06 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/55789 + * trans-array.c (trans_array_constructor): Remove condition + 'dynamic' = true if the loop ubound is a VAR_DECL. + 2013-02-04 Paul Thomas <pault@gcc.gnu.org> PR fortran/56008 diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c index 4553ddc..ee2954e 100644 --- a/gcc/fortran/trans-array.c +++ b/gcc/fortran/trans-array.c @@ -2307,9 +2307,6 @@ trans_array_constructor (gfc_ss * ss, locus * where) } } - if (TREE_CODE (*loop_ubound0) == VAR_DECL) - dynamic = true; - gfc_trans_create_temp_array (&outer_loop->pre, &outer_loop->post, ss, type, NULL_TREE, dynamic, true, false, where); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index fd5146fa..219b12a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-02-06 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/55789 + * gfortran.dg/array_constructor_41.f90: New test. + 2013-02-06 Janus Weil <janus@gcc.gnu.org> PR fortran/55978 diff --git a/gcc/testsuite/gfortran.dg/array_constructor_41.f90 b/gcc/testsuite/gfortran.dg/array_constructor_41.f90 new file mode 100644 index 0000000..eb5fd92 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/array_constructor_41.f90 @@ -0,0 +1,33 @@ +! { dg-do compile } +! { dg-options "-fdump-tree-original" } +! Test fix for PR55789 +! +! Contributed by Joost VandVandole <Joost.VandeVondele@mat.ethz.ch> +! +MODULE M1 +CONTAINS + SUBROUTINE cp_1d_i4_sort(arr) + INTEGER(kind=4), DIMENSION(:), & + INTENT(inout) :: arr + arr = (/ (i, i = 1, SIZE(arr)) /) + END SUBROUTINE +END MODULE M1 + +PROGRAM TEST + USE M1 + INTEGER :: arr(1) + INTERFACE + SUBROUTINE mtrace() BIND(C,name="mtrace") + END SUBROUTINE + END INTERFACE + INTERFACE + SUBROUTINE muntrace() BIND(C,name="muntrace") + END SUBROUTINE + END INTERFACE + CALL mtrace() + CALL cp_1d_i4_sort(arr) + CALL muntrace() +END + +! { dg-final { scan-tree-dump-times "realloc" 0 "original" } } +! { dg-final { cleanup-tree-dump "original" } } |