diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/fortran/trans-expr.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/array_memcpy_4.f90 | 13 |
4 files changed, 28 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 4c1a3c5..671a21e 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,5 +1,10 @@ 2007-01-18 Roger Sayle <roger@eyesopen.com> + * trans-expr.c (copyable_array_p): Consider user derived types without + allocatable components to be copyable. + +2007-01-18 Roger Sayle <roger@eyesopen.com> + * trans-stmt.c (compute_overall_iter_number): Enhance to precompute the number of interations in unconditional FORALL nests with constant bounds. diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c index c6ebf3e..3f186a1 100644 --- a/gcc/fortran/trans-expr.c +++ b/gcc/fortran/trans-expr.c @@ -3815,6 +3815,12 @@ copyable_array_p (gfc_expr * expr) case BT_LOGICAL: return true; + case BT_CHARACTER: + return false; + + case BT_DERIVED: + return !expr->ts.derived->attr.alloc_comp; + default: break; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 3b88a02..dc33ec9 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2007-01-18 Roger Sayle <roger@eyesopen.com> + + * gfortran.dg/array_memcpy_4.f90: New test case. + 2007-01-18 Josh Conner <jconner@apple.com> PR target/30485 diff --git a/gcc/testsuite/gfortran.dg/array_memcpy_4.f90 b/gcc/testsuite/gfortran.dg/array_memcpy_4.f90 new file mode 100644 index 0000000..0f8b5cb --- /dev/null +++ b/gcc/testsuite/gfortran.dg/array_memcpy_4.f90 @@ -0,0 +1,13 @@ +! { dg-do compile } +! { dg-options "-O2 -fdump-tree-original" } + type t + logical valid + integer :: x, y + end type + type (t) :: s(5) + type (t) :: d(5) + + d = s +end +! { dg-final { scan-tree-dump-times "d = " 1 "original" } } +! { dg-final { cleanup-tree-dump "original" } } |