summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDoug Kwan <dougkwan@google.com>2009-05-14 00:02:55 +0000
committerDoug Kwan <dougkwan@gcc.gnu.org>2009-05-14 00:02:55 +0000
commit3d8fa1484bd42d4be91d384ad08334ae6dca3428 (patch)
tree6288940af66bd97da71d011e0e4957820730fa0f
parent7e2791428f91a88bfe3762fa1456f435fc25e2b0 (diff)
downloadgcc-3d8fa1484bd42d4be91d384ad08334ae6dca3428.tar.gz
tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
2009-05-13 Doug Kwan <dougkwan@google.com> * tree-ssa-sccvn.c (compare_ops): Stabilize qsort. From-SVN: r147508
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/tree-ssa-sccvn.c11
2 files changed, 11 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c2da14007b3..52ae15283af 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2009-05-13 Doug Kwan <dougkwan@google.com>
+
+ * tree-ssa-sccvn.c (compare_ops): Stabilize qsort.
+
2009-05-13 Adam Nemet <anemet@caviumnetworks.com>
* config/mips/mips.md (store): Add attributes for QI and HI.
diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c
index b101aebd9e4..539afd2458a 100644
--- a/gcc/tree-ssa-sccvn.c
+++ b/gcc/tree-ssa-sccvn.c
@@ -2421,7 +2421,7 @@ compare_ops (const void *pa, const void *pb)
basic_block bbb;
if (gimple_nop_p (opstmta) && gimple_nop_p (opstmtb))
- return 0;
+ return SSA_NAME_VERSION (opa) - SSA_NAME_VERSION (opb);
else if (gimple_nop_p (opstmta))
return -1;
else if (gimple_nop_p (opstmtb))
@@ -2431,7 +2431,7 @@ compare_ops (const void *pa, const void *pb)
bbb = gimple_bb (opstmtb);
if (!bba && !bbb)
- return 0;
+ return SSA_NAME_VERSION (opa) - SSA_NAME_VERSION (opb);
else if (!bba)
return -1;
else if (!bbb)
@@ -2441,12 +2441,15 @@ compare_ops (const void *pa, const void *pb)
{
if (gimple_code (opstmta) == GIMPLE_PHI
&& gimple_code (opstmtb) == GIMPLE_PHI)
- return 0;
+ return SSA_NAME_VERSION (opa) - SSA_NAME_VERSION (opb);
else if (gimple_code (opstmta) == GIMPLE_PHI)
return -1;
else if (gimple_code (opstmtb) == GIMPLE_PHI)
return 1;
- return gimple_uid (opstmta) - gimple_uid (opstmtb);
+ else if (gimple_uid (opstmta) != gimple_uid (opstmtb))
+ return gimple_uid (opstmta) - gimple_uid (opstmtb);
+ else
+ return SSA_NAME_VERSION (opa) - SSA_NAME_VERSION (opb);
}
return rpo_numbers[bba->index] - rpo_numbers[bbb->index];
}