From: Richard Kenner Date: Sun, 14 Mar 1993 01:45:44 +0000 (-0500) Subject: (simplify_plus_minus): When seeing if we have reduced the number of operands... X-Git-Tag: misc/cutover-egcs-0~10214 X-Git-Url: https://gcc.gnu.org/git/?a=commitdiff_plain;h=91a60f374f56e4dad751afb34904d66a4333e695;p=gcc.git (simplify_plus_minus): When seeing if we have reduced the number of operands... (simplify_plus_minus): When seeing if we have reduced the number of operands, ensure we count a CONST result as two operands. From-SVN: r3729 --- diff --git a/gcc/cse.c b/gcc/cse.c index 6371998d424c..aeb7be50da81 100644 --- a/gcc/cse.c +++ b/gcc/cse.c @@ -3929,7 +3929,7 @@ simplify_plus_minus (code, mode, op0, op1) int negs[8]; rtx result, tem; int n_ops = 2; - int i, j; + int i, j, k; int first = 1, negate = 0, changed; bzero (ops, sizeof ops); @@ -4032,12 +4032,18 @@ simplify_plus_minus (code, mode, op0, op1) } /* Pack all the operands to the lower-numbered entries and give up if - we didn't reduce the number of operands we had. */ - for (i = 0, j = 0; j < n_ops; j++) + we didn't reduce the number of operands we had. Make sure we + count a CONST as two operands. */ + + for (i = 0, j = 0, k = 0; j < n_ops; j++) if (ops[j] != 0) - ops[i] = ops[j], negs[i++] = negs[j]; + { + ops[i] = ops[j], negs[i++] = negs[j]; + if (GET_CODE (ops[j]) == CONST) + k++; + } - if (i >= n_ops) + if (i + k >= n_ops) return 0; n_ops = i;