expr.c (expand_expr, [...]): Don't force using bitfield extraction if no direct load...
authorRichard Kenner <kenner@vlsi1.ultra.nyu.edu>
Tue, 10 Jul 2001 11:29:25 +0000 (11:29 +0000)
committerRichard Kenner <kenner@gcc.gnu.org>
Tue, 10 Jul 2001 11:29:25 +0000 (07:29 -0400)
* expr.c (expand_expr, case COMPONENT_REF): Don't force using bitfield
extraction if no direct load if either EXPAND_CONST_ADDRESS or
EXPAND_INITIALIZER.

From-SVN: r43897

gcc/ChangeLog
gcc/expr.c

index 840fd8306ccc7e445d68fa8d5a8f91ea97098e0f..cab7700d839d0729aed7bf34f144c732774b5b7c 100644 (file)
@@ -1,5 +1,9 @@
 Tue Jul 10 07:27:53 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
 
+       * expr.c (expand_expr, case COMPONENT_REF): Don't force using bitfield
+       extraction if no direct load if either EXPAND_CONST_ADDRESS or
+       EXPAND_INITIALIZER.
+
        * emit-rtl.c (adjust_address, adjust_address_nv): Change criteria for
        whether can put offset inside LO_SUM to check mode alignment, not size.
 
index a6712826a330cef467a7dd0be9797723821bee23..3786ee9849b76ba59379c87547c7ccca8fb4135d 100644 (file)
@@ -7137,7 +7137,9 @@ expand_expr (exp, target, tmode, modifier)
            || GET_CODE (op0) == REG || GET_CODE (op0) == SUBREG
            || (mode1 != BLKmode && ! direct_load[(int) mode1]
                && GET_MODE_CLASS (mode) != MODE_COMPLEX_INT
-               && GET_MODE_CLASS (mode) != MODE_COMPLEX_FLOAT)
+               && GET_MODE_CLASS (mode) != MODE_COMPLEX_FLOAT
+               && modifier != EXPAND_CONST_ADDRESS
+               && modifier != EXPAND_INITIALIZER)
            /* If the field isn't aligned enough to fetch as a memref,
               fetch it as a bit field.  */
            || (mode1 != BLKmode