aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1996-02-13 10:28:57 -0800
committerJim Wilson <wilson@gcc.gnu.org>1996-02-13 10:28:57 -0800
commit126e5b0d250c6955ae27a0f8c65e1f0e254215df (patch)
tree83a8c98e3e8976958bad20178e4594b189935f59
parent03075c13673a1e1905d6a3a9d18b3e69d0aadc74 (diff)
downloadgcc-126e5b0d250c6955ae27a0f8c65e1f0e254215df.zip
gcc-126e5b0d250c6955ae27a0f8c65e1f0e254215df.tar.gz
gcc-126e5b0d250c6955ae27a0f8c65e1f0e254215df.tar.bz2
(store_constructor_field): Only call change_address if
bitpos is nonzero. From-SVN: r11258
-rw-r--r--gcc/expr.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index 342fa37..79fb387 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -3275,12 +3275,11 @@ store_constructor_field (target, bitsize, bitpos,
if (TREE_CODE (exp) == CONSTRUCTOR
&& (bitpos % BITS_PER_UNIT) == 0)
{
- bitpos /= BITS_PER_UNIT;
- store_constructor (exp,
- change_address (target, VOIDmode,
- plus_constant (XEXP (target, 0),
- bitpos)),
- cleared);
+ if (bitpos != 0)
+ target = change_address (target, VOIDmode,
+ plus_constant (XEXP (target, 0),
+ bitpos / BITS_PER_UNIT));
+ store_constructor (exp, target, cleared);
}
else
store_field (target, bitsize, bitpos, mode, exp,