summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/expr.c3
2 files changed, 7 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d06c3a4e5d9..3d71a4fddbf 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,9 @@
Thu Apr 8 19:20:18 1999 Jeffrey A Law (law@cygnus.com)
+ * expr.c (expand_expr, case ARRAY_REF, COMPONENT_REF, BIT_FIELD_REF):
+ Do not try to optimize a aggregate address which has VOIDmode.
+ Mirrors March 23 change to expand_assignment.
+
* flow.c (delete_unreachable_blocks): Do not require an edge to
be marked with EDGE_FALLTHRU when tidying an edge which connects
consecutive basic blocks.
diff --git a/gcc/expr.c b/gcc/expr.c
index d7f87c5743f..8d5a5402184 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -6417,8 +6417,11 @@ expand_expr (exp, target, tmode, modifier)
#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 (op0) == MEM
&& GET_MODE (op0) == BLKmode
+ && GET_MODE (XEXP (op0, 0)) != VOIDmode
&& bitsize
&& (bitpos % bitsize) == 0
&& (bitsize % GET_MODE_ALIGNMENT (mode1)) == 0
OpenPOWER on IntegriCloud