diff options
author | J"orn Rennecke <joern.rennecke@superh.com> | 2004-06-16 16:41:57 +0000 |
---|---|---|
committer | J"orn Rennecke <joern.rennecke@superh.com> | 2004-06-16 16:41:57 +0000 |
commit | 665a08db3faadc8a837aefde33d66d345e5bca77 (patch) | |
tree | 6f1a0a6cecdf65502dc6fe173d4cf09e2a65cb2e | |
parent | 49933b9924ab885d7d1623ed35cb9519d97fbeb9 (diff) |
* simplify-rtx.c (simplify_plus_minus_op_data): Change type of neg
to short. New member ix.
(simplify_plus_minus_op_data_cmp): Break ties using ix member.
(simplify_plus_minus): Initialize ix members before calling qsort.
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/sh-elf-3_5-branch@83246 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog.sh-elf | 7 | ||||
-rw-r--r-- | gcc/simplify-rtx.c | 18 |
2 files changed, 21 insertions, 4 deletions
diff --git a/gcc/ChangeLog.sh-elf b/gcc/ChangeLog.sh-elf index 08f13bfe49a..f31fb1dba9c 100644 --- a/gcc/ChangeLog.sh-elf +++ b/gcc/ChangeLog.sh-elf @@ -1,3 +1,10 @@ +2004-06-16 J"orn Rennecke <joern.rennecke@superh.com> + + * simplify-rtx.c (simplify_plus_minus_op_data): Change type of neg + to short. New member ix. + (simplify_plus_minus_op_data_cmp): Break ties using ix member. + (simplify_plus_minus): Initialize ix members before calling qsort. + 2004-06-15 J"orn Rennecke <joern.rennecke@superh.com> * combine.c (distribute_notes): Comment typo fix. diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c index fb80219155c..807092a22fc 100644 --- a/gcc/simplify-rtx.c +++ b/gcc/simplify-rtx.c @@ -2373,7 +2373,8 @@ simplify_binary_operation (enum rtx_code code, enum machine_mode mode, struct simplify_plus_minus_op_data { rtx op; - int neg; + short neg; + short ix; }; static int @@ -2381,9 +2382,13 @@ simplify_plus_minus_op_data_cmp (const void *p1, const void *p2) { const struct simplify_plus_minus_op_data *d1 = p1; const struct simplify_plus_minus_op_data *d2 = p2; + int result; - return (commutative_operand_precedence (d2->op) - - commutative_operand_precedence (d1->op)); + result = (commutative_operand_precedence (d2->op) + - commutative_operand_precedence (d1->op)); + if (result) + return result; + return d1->ix - d2->ix; } static rtx @@ -2558,7 +2563,12 @@ simplify_plus_minus (enum rtx_code code, enum machine_mode mode, rtx op0, /* Pack all the operands to the lower-numbered entries. */ for (i = 0, j = 0; j < n_ops; j++) if (ops[j].op) - ops[i++] = ops[j]; + { + ops[i] = ops[j]; + /* Stabilize sort. */ + ops[i].ix = i; + i++; + } n_ops = i; /* Sort the operations based on swap_commutative_operands_p. */ |