diff options
author | Richard Henderson <rth@redhat.com> | 2002-09-16 23:56:47 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2002-09-16 23:56:47 -0700 |
commit | cb38fd88af859b9c125ba6d4768969289ea0ebd9 (patch) | |
tree | 052358a4ba373ec54ae0d5b223c56dd528b51e0b /gcc/expr.c | |
parent | bd055118bde42506983db3bfed6d05be5974709e (diff) | |
download | gcc-cb38fd88af859b9c125ba6d4768969289ea0ebd9.zip gcc-cb38fd88af859b9c125ba6d4768969289ea0ebd9.tar.gz gcc-cb38fd88af859b9c125ba6d4768969289ea0ebd9.tar.bz2 |
expr.c (emit_block_move): Set memory block size as appropriate for the copy.
* expr.c (emit_block_move): Set memory block size as appropriate
for the copy.
From-SVN: r57233
Diffstat (limited to 'gcc/expr.c')
-rw-r--r-- | gcc/expr.c | 10 |
1 files changed, 10 insertions, 0 deletions
@@ -1733,6 +1733,16 @@ emit_block_move (x, y, size, method) if (size == 0) abort (); + /* Set MEM_SIZE as appropriate for this block copy. The main place this + can be incorrect is coming from __builtin_memcpy. */ + if (GET_CODE (size) == CONST_INT) + { + x = shallow_copy_rtx (x); + y = shallow_copy_rtx (y); + set_mem_size (x, size); + set_mem_size (y, size); + } + if (GET_CODE (size) == CONST_INT && MOVE_BY_PIECES_P (INTVAL (size), align)) move_by_pieces (x, y, INTVAL (size), align); else if (emit_block_move_via_movstr (x, y, size, align)) |