diff options
author | Uros Bizjak <uros@gcc.gnu.org> | 2008-03-11 13:47:29 +0100 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2008-03-11 13:47:29 +0100 |
commit | ab669042dc81955b888dd05ab9ff23a4b7e8c8ba (patch) | |
tree | fe483073f489cc1b9f984754f2e837a153f051b4 /gcc/expr.c | |
parent | 2d3ca8b7219003d4504d49aec0bff1566391a69a (diff) | |
download | gcc-ab669042dc81955b888dd05ab9ff23a4b7e8c8ba.zip gcc-ab669042dc81955b888dd05ab9ff23a4b7e8c8ba.tar.gz gcc-ab669042dc81955b888dd05ab9ff23a4b7e8c8ba.tar.bz2 |
re PR c/35526 (ICE on memcpy)
PR middle-end/35526
* expr.c (store_expr): Call emit_block_move if the mode
of "temp" RTX is BLKmode.
testsuite/ChangeLog:
PR middle-end/35526
* g++.dg/torture/pr35526.C: New test.
From-SVN: r133106
Diffstat (limited to 'gcc/expr.c')
-rw-r--r-- | gcc/expr.c | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -4654,7 +4654,8 @@ store_expr (tree exp, rtx target, int call_param_p, bool nontemporal) temp = convert_to_mode (GET_MODE (target), temp, unsignedp); emit_move_insn (target, temp); } - else if (GET_MODE (target) == BLKmode) + else if (GET_MODE (target) == BLKmode + || GET_MODE (temp) == BLKmode) emit_block_move (target, temp, expr_size (exp), (call_param_p ? BLOCK_OP_CALL_PARM |