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