aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRoger Sayle <roger@eyesopen.com>2007-01-18 18:19:39 +0000
committerRoger Sayle <sayle@gcc.gnu.org>2007-01-18 18:19:39 +0000
commit150524cd4548de6c285f657c7362d83028b327d2 (patch)
treee2b763ed862eb208329b1987c53c8a55019a7955 /gcc
parent3bf783b7e2095210aaee3da1e797b4348b796896 (diff)
downloadgcc-150524cd4548de6c285f657c7362d83028b327d2.zip
gcc-150524cd4548de6c285f657c7362d83028b327d2.tar.gz
gcc-150524cd4548de6c285f657c7362d83028b327d2.tar.bz2
trans-expr.c (copyable_array_p): Consider user derived types without allocatable components to be copyable.
* trans-expr.c (copyable_array_p): Consider user derived types without allocatable components to be copyable. * gfortran.dg/array_memcpy_4.f90: New test case. From-SVN: r120906
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog5
-rw-r--r--gcc/fortran/trans-expr.c6
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gfortran.dg/array_memcpy_4.f9013
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" } }