diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index c22d3d9908f2..90987da2238e 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2013-02-06 Paul Thomas + + 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 PR fortran/56008 diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c index 4553ddc5b537..ee2954e5bcab 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 fd5146fa7b4b..219b12a6e755 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-02-06 Paul Thomas + + PR fortran/55789 + * gfortran.dg/array_constructor_41.f90: New test. + 2013-02-06 Janus Weil 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 000000000000..eb5fd92a1eea --- /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 +! +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" } }