From 6ab06cbb5b0861f9c65f009eba3d6cddbce7910b Mon Sep 17 00:00:00 2001
From: Jim Wilson <wilson@cygnus.com>
Date: Thu, 1 Apr 1999 12:05:24 +0000
Subject: [PATCH] Fix irix6 libstdc++ v3 build failure with complex types.

	* expr.c (store_field): When check direct_store, assume all complex
	modes can be directly stored.

From-SVN: r26104
---
 gcc/ChangeLog | 5 +++++
 gcc/expr.c    | 4 +++-
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ba346a1950e4..231007ba9071 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 ab533141bf58..3c18b7300384 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,
-- 
GitLab