summaryrefslogtreecommitdiff
path: root/gcc/expr.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2019-10-03 00:33:39 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2019-10-03 00:33:39 +0200
commit775eaa4d83458393a34aa6197ff823b63d6078fd (patch)
tree1238acad4fded9e02848fdc004a8f02d187e6845 /gcc/expr.c
parent1006c9d4395a939820df76f37c7b085a4a1a003f (diff)
re PR rtl-optimization/91976 (RTL check: expected code 'const_int', have 'reg' in emit_block_move_hints, at expr.c:1627)
PR rtl-optimization/91976 * expr.c (emit_block_move_hints): Don't call can_move_by_pieces if size is not CONST_INT_P, set pieces_ok to false in that case. Simplify CONST_INT_P (size) && pieces_ok to pieces_ok. Formatting fix. From-SVN: r276495
Diffstat (limited to 'gcc/expr.c')
-rw-r--r--gcc/expr.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index bd6a71a4e2f..c4210547aee 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -1624,16 +1624,18 @@ emit_block_move_hints (rtx x, rtx y, rtx size, enum block_op_methods method,
set_mem_size (y, const_size);
}
- bool pieces_ok = can_move_by_pieces (INTVAL (size), align);
+ bool pieces_ok = false;
+ if (CONST_INT_P (size))
+ pieces_ok = can_move_by_pieces (INTVAL (size), align);
bool pattern_ok = false;
- if (!CONST_INT_P (size) || !pieces_ok || might_overlap)
+ if (!pieces_ok || might_overlap)
{
- pattern_ok =
- emit_block_move_via_pattern (x, y, size, align,
- expected_align, expected_size,
- min_size, max_size, probable_max_size,
- might_overlap);
+ pattern_ok
+ = emit_block_move_via_pattern (x, y, size, align,
+ expected_align, expected_size,
+ min_size, max_size, probable_max_size,
+ might_overlap);
if (!pattern_ok && might_overlap)
{
/* Do not try any of the other methods below as they are not safe
@@ -1645,7 +1647,7 @@ emit_block_move_hints (rtx x, rtx y, rtx size, enum block_op_methods method,
if (pattern_ok)
;
- else if (CONST_INT_P (size) && pieces_ok)
+ else if (pieces_ok)
move_by_pieces (x, y, INTVAL (size), align, RETURN_BEGIN);
else if (may_use_call && !might_overlap
&& ADDR_SPACE_GENERIC_P (MEM_ADDR_SPACE (x))