aboutsummaryrefslogtreecommitdiff
path: root/gcc/expr.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/expr.cc')
-rw-r--r--gcc/expr.cc3
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/expr.cc b/gcc/expr.cc
index 372ad34..15be1c8 100644
--- a/gcc/expr.cc
+++ b/gcc/expr.cc
@@ -6226,6 +6226,9 @@ store_expr (tree exp, rtx target, int call_param_p,
temp = convert_modes (inner_mode, outer_mode, temp,
SUBREG_PROMOTED_SIGN (target));
}
+ else if (!SCALAR_INT_MODE_P (GET_MODE (temp)))
+ temp = convert_modes (outer_mode, TYPE_MODE (TREE_TYPE (exp)),
+ temp, SUBREG_PROMOTED_SIGN (target));
convert_move (SUBREG_REG (target), temp,
SUBREG_PROMOTED_SIGN (target));