diff options
author | Paul Brook <paul@codesourcery.com> | 2004-01-12 15:33:59 +0000 |
---|---|---|
committer | Paul Brook <pbrook@gcc.gnu.org> | 2004-01-12 15:33:59 +0000 |
commit | 0786ca878437acd1ec713b86b94b02526ea5dcc4 (patch) | |
tree | 0feb8cbfa34384aaa4766383741d221390c48855 /gcc | |
parent | 543ca912c85986884ba869742ec78488950742ea (diff) | |
download | gcc-0786ca878437acd1ec713b86b94b02526ea5dcc4.zip gcc-0786ca878437acd1ec713b86b94b02526ea5dcc4.tar.gz gcc-0786ca878437acd1ec713b86b94b02526ea5dcc4.tar.bz2 |
* simplify-rtx.c (simplify_plus_minus): Always generate canonical form.
From-SVN: r75724
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/simplify-rtx.c | 14 |
2 files changed, 8 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d379c80..724ede3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2004-01-09 Paul Brook <paul@codesourcery.com> + + * simplify-rtx.c (simplify_plus_minus): Always generate canonical form. + 2004-01-09 J"orn Rennecke <joern.rennecke@superh.com> PR target/13585 diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c index ddf732b..615e09f 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. |