From 0786ca878437acd1ec713b86b94b02526ea5dcc4 Mon Sep 17 00:00:00 2001 From: Paul Brook Date: Mon, 12 Jan 2004 15:33:59 +0000 Subject: [PATCH] * simplify-rtx.c (simplify_plus_minus): Always generate canonical form. From-SVN: r75724 --- gcc/ChangeLog | 4 ++++ gcc/simplify-rtx.c | 14 ++++---------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d379c803f89..724ede3a50b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2004-01-09 Paul Brook + + * simplify-rtx.c (simplify_plus_minus): Always generate canonical form. + 2004-01-09 J"orn Rennecke PR target/13585 diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c index ddf732bdbd8..615e09f8452 100644 --- a/gcc/simplify-rtx.c +++ b/gcc/simplify-rtx.c @@ -2250,7 +2250,7 @@ simplify_plus_minus (enum rtx_code code, enum machine_mode mode, rtx op0, struct simplify_plus_minus_op_data ops[8]; rtx result, tem; int n_ops = 2, input_ops = 2, input_consts = 0, n_consts; - int first, negate, changed; + int first, changed; int i, j; memset (ops, 0, sizeof ops); @@ -2460,18 +2460,12 @@ simplify_plus_minus (enum rtx_code code, enum machine_mode mode, rtx op0, || (n_ops + n_consts == input_ops && n_consts <= input_consts))) return NULL_RTX; - /* Put a non-negated operand first. If there aren't any, make all - operands positive and negate the whole thing later. */ + /* Put a non-negated operand first, if possible. */ - negate = 0; for (i = 0; i < n_ops && ops[i].neg; i++) continue; if (i == n_ops) - { - for (i = 0; i < n_ops; i++) - ops[i].neg = 0; - negate = 1; - } + ops[0].op = gen_rtx_NEG (mode, ops[0].op); else if (i != 0) { tem = ops[0].op; @@ -2486,7 +2480,7 @@ simplify_plus_minus (enum rtx_code code, enum machine_mode mode, rtx op0, result = gen_rtx_fmt_ee (ops[i].neg ? MINUS : PLUS, mode, result, ops[i].op); - return negate ? gen_rtx_NEG (mode, result) : result; + return result; } /* Like simplify_binary_operation except used for relational operators.