diff options
author | vries <vries@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-10-16 20:32:45 +0000 |
---|---|---|
committer | vries <vries@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-10-16 20:32:45 +0000 |
commit | 01dd0067b62af36b93ffcd6a9ff9070a64ed1b45 (patch) | |
tree | 48512b7be16b93e76a8180a2cb924564b49d714a /gcc/expr.c | |
parent | 698c853f3099b376d4a587d86b3f3c8eae04db74 (diff) | |
download | ppe42-gcc-01dd0067b62af36b93ffcd6a9ff9070a64ed1b45.tar.gz ppe42-gcc-01dd0067b62af36b93ffcd6a9ff9070a64ed1b45.zip |
2012-10-16 Tom de Vries <tom@codesourcery.com>
* expr.c (move_by_pieces, move_by_pieces_ninsns, can_store_by_pieces)
(store_by_pieces_1): Don't enter loop when no more data is left.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@192514 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/expr.c')
-rw-r--r-- | gcc/expr.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/gcc/expr.c b/gcc/expr.c index 30431763649..8fa19fd5ce1 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -966,7 +966,7 @@ move_by_pieces (rtx to, rtx from, unsigned HOST_WIDE_INT len, /* First move what we can in the largest integer mode, then go to successively smaller modes. */ - while (max_size > 1) + while (max_size > 1 && data.len > 0) { enum machine_mode mode = widest_int_mode_for_size (max_size); @@ -1026,7 +1026,7 @@ move_by_pieces_ninsns (unsigned HOST_WIDE_INT l, unsigned int align, align = alignment_for_piecewise_move (MOVE_MAX_PIECES, align); - while (max_size > 1) + while (max_size > 1 && l > 0) { enum machine_mode mode; enum insn_code icode; @@ -2417,7 +2417,7 @@ can_store_by_pieces (unsigned HOST_WIDE_INT len, { l = len; max_size = STORE_MAX_PIECES + 1; - while (max_size > 1) + while (max_size > 1 && l > 0) { mode = widest_int_mode_for_size (max_size); @@ -2612,7 +2612,7 @@ store_by_pieces_1 (struct store_by_pieces_d *data ATTRIBUTE_UNUSED, /* First store what we can in the largest integer mode, then go to successively smaller modes. */ - while (max_size > 1) + while (max_size > 1 && data->len > 0) { enum machine_mode mode = widest_int_mode_for_size (max_size); |