diff options
Diffstat (limited to 'gcc/expr.cc')
-rw-r--r-- | gcc/expr.cc | 3 |
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)); |