aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/expr.c3
2 files changed, 8 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 897e1c1..9573ce7 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+Tue Mar 23 23:32:14 1999 Jeffrey A Law (law@cygnus.com)
+
+ * expr.c (expand_assignment): Do not try to optimize a aggregate
+ address which has VOIDmode.
+
Tue Mar 23 22:51:48 1999 Mumit Khan <khan@xraylith.wisc.edu>
Donn Terry <donn@interix.com>
diff --git a/gcc/expr.c b/gcc/expr.c
index a09f269..ab53314 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -3276,8 +3276,11 @@ expand_assignment (to, from, want_value, suggest_reg)
#endif
}
+ /* A constant address in TO_RTX can have VOIDmode, we must not try
+ to call force_reg for that case. Avoid that case. */
if (GET_CODE (to_rtx) == MEM
&& GET_MODE (to_rtx) == BLKmode
+ && GET_MODE (XEXP (to_rtx, 0)) != VOIDmode
&& bitsize
&& (bitpos % bitsize) == 0
&& (bitsize % GET_MODE_ALIGNMENT (mode1)) == 0