diff options
author | Jim Wilson <wilson@gcc.gnu.org> | 1996-03-12 09:51:15 -0800 |
---|---|---|
committer | Jim Wilson <wilson@gcc.gnu.org> | 1996-03-12 09:51:15 -0800 |
commit | f2420d0b9230d2376c12380ce402f212be8714d8 (patch) | |
tree | bad91d6c6f59a68e2f20191ef8ffd7d4353d193f /gcc | |
parent | 2af1bac84c27a3e54ea74857e9db3a5143c7d23e (diff) | |
download | gcc-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.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -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, |