aboutsummaryrefslogtreecommitdiff
path: root/gcc/expr.c
diff options
context:
space:
mode:
authorMaxim Kuvyrkov <maxim.kuvyrkov@linaro.org>2018-06-27 12:33:24 +0000
committerMaxim Kuvyrkov <maxim.kuvyrkov@linaro.org>2018-10-02 11:07:15 +0000
commit18700cbbfa7b2c0a8a21947b01fae1748bbdcae2 (patch)
treebbbecedfb4235fe5a474728df7442a1c3fd7e1e1 /gcc/expr.c
parent0378e2ec3fc15a72e543b336d1ea4d3677c569ef (diff)
Merge branches/gcc-7-branch rev 262169.
Change-Id: Ia4e0d5dab9b29367e5f61b6ebd65fa0c318dda86
Diffstat (limited to 'gcc/expr.c')
-rw-r--r--gcc/expr.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index 0d287ecbe68..f8964b84bef 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -5109,7 +5109,10 @@ expand_assignment (tree to, tree from, bool nontemporal)
&& bitpos == 0
&& bitsize == mode_bitsize)
result = store_expr (from, to_rtx, false, nontemporal, reversep);
- else if (bitsize == mode_bitsize / 2
+ else if (COMPLEX_MODE_P (GET_MODE (to_rtx))
+ && (TYPE_MODE (TREE_TYPE (from))
+ == GET_MODE_INNER (GET_MODE (to_rtx)))
+ && bitsize == mode_bitsize / 2
&& (bitpos == 0 || bitpos == mode_bitsize / 2))
result = store_expr (from, XEXP (to_rtx, bitpos != 0), false,
nontemporal, reversep);