diff options
author | Uros Bizjak <uros@gcc.gnu.org> | 2012-11-07 23:34:48 +0100 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2012-11-07 23:34:48 +0100 |
commit | 1939f02be107ce3334dacef9bf038f6f32a29574 (patch) | |
tree | 9e8fe562275b008838d5d17b264d28e9ca40cc7b /gcc | |
parent | dd64a6f7c8165c204b3cc2f353562df0b6bf335d (diff) | |
download | gcc-1939f02be107ce3334dacef9bf038f6f32a29574.zip gcc-1939f02be107ce3334dacef9bf038f6f32a29574.tar.gz gcc-1939f02be107ce3334dacef9bf038f6f32a29574.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/expr.c | 17 |
2 files changed, 12 insertions, 14 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b11e703..0c363c2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-11-07 Uros Bizjak <ubizjak@gmail.com> + + PR middle-end/55235 + * expr.c (store_expr): Do not call emit_block_move for + non-BLKmode values. + 2012-11-07 Eric Botcazou <ebotcazou@adacore.com> PR middle-end/55219 @@ -7,8 +13,7 @@ 2012-11-07 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/55122 - * lra-constraints.c (match_reload): Sync values for dead input - pseudos. + * lra-constraints.c (match_reload): Sync values for dead input pseudos. 2012-11-07 Richard Henderson <rth@redhat.com> @@ -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))); |