aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1996-03-12 09:51:15 -0800
committerJim Wilson <wilson@gcc.gnu.org>1996-03-12 09:51:15 -0800
commitf2420d0b9230d2376c12380ce402f212be8714d8 (patch)
treebad91d6c6f59a68e2f20191ef8ffd7d4353d193f /gcc
parent2af1bac84c27a3e54ea74857e9db3a5143c7d23e (diff)
downloadgcc-f2420d0b9230d2376c12380ce402f212be8714d8.zip
gcc-f2420d0b9230d2376c12380ce402f212be8714d8.tar.gz
gcc-f2420d0b9230d2376c12380ce402f212be8714d8.tar.bz2
(expand_expr, case COMPONENT_REF): For unaligned object in
an aligned union, delete check for EXPAND_SUM. From-SVN: r11519
Diffstat (limited to 'gcc')
-rw-r--r--gcc/expr.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index 1765d69..33bfb6a 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -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,