summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>2012-11-07 22:34:48 +0000
committeruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>2012-11-07 22:34:48 +0000
commit60797203d2e9cd45f687931a2c458e700e70bfe8 (patch)
tree9e8fe562275b008838d5d17b264d28e9ca40cc7b
parent10e53de95b3721d6d717751999aac778b8c7227d (diff)
downloadgcc-60797203d2e9cd45f687931a2c458e700e70bfe8.tar.gz
PR middle-end/55235
* expr.c (store_expr): Do not call emit_block_move for non-BLKmode values. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193314 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/expr.c17
2 files changed, 12 insertions, 14 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b11e7030d2e..0c363c233da 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>
diff --git a/gcc/expr.c b/gcc/expr.c
index 57e71fbaca3..1e41625b2ed 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)));