(expand_expr, case COMPONENT_REF): For unaligned object in
authorJim Wilson <wilson@gcc.gnu.org>
Tue, 12 Mar 1996 17:51:15 +0000 (09:51 -0800)
committerJim Wilson <wilson@gcc.gnu.org>
Tue, 12 Mar 1996 17:51:15 +0000 (09:51 -0800)
an aligned union, delete check for EXPAND_SUM.

From-SVN: r11519

gcc/expr.c

index 1765d6906ee2f71c3af9a8f318ab7c4a51786788..33bfb6acb7dd1b3f9a092b6f8136af7cbae5ee8f 100644 (file)
@@ -5334,11 +5334,12 @@ expand_expr (exp, target, tmode, modifier)
           an integer-mode (e.g., SImode) object.  Handle this case
           by doing the extract into an object as wide as the field
           (which we know to be the width of a basic mode), then
-          storing into memory, and changing the mode to BLKmode.  */
+          storing into memory, and changing the mode to BLKmode.
+          If we ultimately want the address (EXPAND_CONST_ADDRESS or
+          EXPAND_INITIALIZER), then we must not copy to a temporary.  */
        if (mode1 == VOIDmode
            || GET_CODE (op0) == REG || GET_CODE (op0) == SUBREG
            || (modifier != EXPAND_CONST_ADDRESS
-               && modifier != EXPAND_SUM
                && modifier != EXPAND_INITIALIZER
                && ((mode1 != BLKmode && ! direct_load[(int) mode1])
                    /* If the field isn't aligned enough to fetch as a memref,