summaryrefslogtreecommitdiffstats
path: root/gcc/expr.c
diff options
context:
space:
mode:
authorvries <vries@138bc75d-0d04-0410-961f-82ee72b054a4>2012-10-16 20:32:45 +0000
committervries <vries@138bc75d-0d04-0410-961f-82ee72b054a4>2012-10-16 20:32:45 +0000
commit01dd0067b62af36b93ffcd6a9ff9070a64ed1b45 (patch)
tree48512b7be16b93e76a8180a2cb924564b49d714a /gcc/expr.c
parent698c853f3099b376d4a587d86b3f3c8eae04db74 (diff)
downloadppe42-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.c8
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);
OpenPOWER on IntegriCloud