From 1939f02be107ce3334dacef9bf038f6f32a29574 Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Wed, 7 Nov 2012 23:34:48 +0100 Subject: re PR middle-end/55235 (FAIL: gcc.target/i386/pr44948-2a.c) PR middle-end/55235 * expr.c (store_expr): Do not call emit_block_move for non-BLKmode values. From-SVN: r193314 --- gcc/expr.c | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) (limited to 'gcc/expr.c') diff --git a/gcc/expr.c b/gcc/expr.c index 57e71fb..1e41625 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -5246,19 +5246,12 @@ store_expr (tree exp, rtx target, int call_param_p, bool nontemporal) { if (GET_MODE (target) == BLKmode) { - if (REG_P (temp)) - { - if (TREE_CODE (exp) == CALL_EXPR) - copy_blkmode_from_reg (target, temp, TREE_TYPE (exp)); - else - store_bit_field (target, - INTVAL (expr_size (exp)) * BITS_PER_UNIT, - 0, 0, 0, GET_MODE (temp), temp); - } + if (REG_P (temp) && TREE_CODE (exp) == CALL_EXPR) + copy_blkmode_from_reg (target, temp, TREE_TYPE (exp)); else - emit_block_move (target, temp, expr_size (exp), - (call_param_p - ? BLOCK_OP_CALL_PARM : BLOCK_OP_NORMAL)); + store_bit_field (target, + INTVAL (expr_size (exp)) * BITS_PER_UNIT, + 0, 0, 0, GET_MODE (temp), temp); } else convert_move (target, temp, TYPE_UNSIGNED (TREE_TYPE (exp))); -- cgit v1.1