Commit 29e9efdf by Richard Guenther Committed by Richard Biener

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
parent c3576fa7
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);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment