expr.c (store_expr): Use emit_block_move only if both source and target are MEMs.
2010-08-05 Richard Guenther <rguenther@suse.de> * expr.c (store_expr): Use emit_block_move only if both source and target are MEMs. Use store_bit_field if only the target is a MEM. From-SVN: r162918
This commit is contained in:
parent
c3576fa73f
commit
29e9efdf75
2 changed files with 10 additions and 1 deletions
|
@ -1,3 +1,9 @@
|
|||
2010-08-05 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
* expr.c (store_expr): Use emit_block_move only if both
|
||||
source and target are MEMs. Use store_bit_field if only
|
||||
the target is a MEM.
|
||||
|
||||
2010-08-05 Richard Henderson <rth@redhat.com>
|
||||
|
||||
PR 45189
|
||||
|
|
|
@ -4752,11 +4752,14 @@ store_expr (tree exp, rtx target, int call_param_p, bool nontemporal)
|
|||
{
|
||||
int unsignedp = TYPE_UNSIGNED (TREE_TYPE (exp));
|
||||
if (GET_MODE (target) == BLKmode
|
||||
|| GET_MODE (temp) == BLKmode)
|
||||
&& GET_MODE (temp) == BLKmode)
|
||||
emit_block_move (target, temp, expr_size (exp),
|
||||
(call_param_p
|
||||
? BLOCK_OP_CALL_PARM
|
||||
: BLOCK_OP_NORMAL));
|
||||
else if (GET_MODE (target) == BLKmode)
|
||||
store_bit_field (target, INTVAL (expr_size (exp)) * BITS_PER_UNIT,
|
||||
0, GET_MODE (temp), temp);
|
||||
else
|
||||
convert_move (target, temp, unsignedp);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue