diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ba346a1950e4f48d736acc51d15f19cd9d623544..231007ba907127285e6f83b0635ab8a33823b38c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+Thu Apr  1 12:04:05 1999  Jim Wilson  <wilson@cygnus.com>
+
+	* expr.c (store_field): When check direct_store, assume all complex
+	modes can be directly stored.
+
 1999-04-01  Bruce Korb <ddsinc09@ix.netcom.com>
 
 	* fixinc/genfixes:  new shell script that runs autogen
diff --git a/gcc/expr.c b/gcc/expr.c
index ab533141bf58f1ffda1a8d52086cae8db18825e9..3c18b73003845d20b10116a12cc92e9e7dd2052a 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -4608,7 +4608,9 @@ store_field (target, bitsize, bitpos, mode, exp, value_mode,
      Use bit-field techniques or SUBREG to store in it.  */
 
   if (mode == VOIDmode
-      || (mode != BLKmode && ! direct_store[(int) mode])
+      || (mode != BLKmode && ! direct_store[(int) mode]
+	  && GET_MODE_CLASS (mode) != MODE_COMPLEX_INT
+	  && GET_MODE_CLASS (mode) != MODE_COMPLEX_FLOAT)
       || GET_CODE (target) == REG
       || GET_CODE (target) == SUBREG
       /* If the field isn't aligned enough to store as an ordinary memref,