aboutsummaryrefslogtreecommitdiff
path: root/gcc/expr.c
diff options
context:
space:
mode:
authorMaxim Kuvyrkov <maxim.kuvyrkov@linaro.org>2018-04-25 13:36:44 +0000
committerMaxim Kuvyrkov <maxim.kuvyrkov@linaro.org>2018-04-25 13:36:44 +0000
commit9fd777e570c1f99ada82b1dfc1147e7009a0f7b9 (patch)
tree0525f361046905aeb53f5119315e1f0cd350e462 /gcc/expr.c
parentd0468e277dbf6467436837290db02134ab20f2d1 (diff)
Merge branches/gcc-7-branch rev 259627.
Change-Id: I562fdd470b8fb23137c91e670eab4f0ba8d87204
Diffstat (limited to 'gcc/expr.c')
-rw-r--r--gcc/expr.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index c0dbd643831..0d287ecbe68 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -6893,8 +6893,9 @@ store_field (rtx target, HOST_WIDE_INT bitsize, HOST_WIDE_INT bitpos,
if (GET_CODE (temp) == PARALLEL)
{
HOST_WIDE_INT size = int_size_in_bytes (TREE_TYPE (exp));
- machine_mode temp_mode
- = smallest_mode_for_size (size * BITS_PER_UNIT, MODE_INT);
+ machine_mode temp_mode = GET_MODE (temp);
+ if (temp_mode == BLKmode || temp_mode == VOIDmode)
+ temp_mode = smallest_mode_for_size (size * BITS_PER_UNIT, MODE_INT);
rtx temp_target = gen_reg_rtx (temp_mode);
emit_group_store (temp_target, temp, TREE_TYPE (exp), size);
temp = temp_target;