diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1328e0b5c9f27174c2073d96c66d4c42403082a9..d066b2811dbe97c328bd67de421d14d59252acc3 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2002-12-23  David Edelsohn  <edelsohn@gnu.org>
+
+	* expr.c (expand_assignment): Apply special treatment to
+	ARRAY_TYPE.
+
 2002-12-23  Kazu Hirata  <kazu@cs.umass.edu>
 
 	* config/h8300/h8300-protos.h: Update the prototype of
diff --git a/gcc/expr.c b/gcc/expr.c
index 2d9403643cea2d6840508be0fca30a05a74cf6f0..f4ea7c9c293592760bd375d220f3fa7db80d4eed 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -4027,7 +4027,8 @@ expand_assignment (to, from, want_value, suggest_reg)
      problem.  */
 
   if (TREE_CODE (to) == COMPONENT_REF || TREE_CODE (to) == BIT_FIELD_REF
-      || TREE_CODE (to) == ARRAY_REF || TREE_CODE (to) == ARRAY_RANGE_REF)
+      || TREE_CODE (to) == ARRAY_REF || TREE_CODE (to) == ARRAY_RANGE_REF
+      || TREE_CODE (TREE_TYPE (to)) == ARRAY_TYPE)
     {
       enum machine_mode mode1;
       HOST_WIDE_INT bitsize, bitpos;