aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-coalesce.c
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2009-02-09 11:09:25 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2009-02-09 11:09:25 +0000
commit4bb07c5d3708bbab76c88458eb885a66c7ecf265 (patch)
treea5a4fa014573b90d9d7e979aabb0ae0586189fe4 /gcc/tree-ssa-coalesce.c
parentf060a26123884c98f69ced61aea93dea895ea9eb (diff)
downloadgcc-4bb07c5d3708bbab76c88458eb885a66c7ecf265.zip
gcc-4bb07c5d3708bbab76c88458eb885a66c7ecf265.tar.gz
gcc-4bb07c5d3708bbab76c88458eb885a66c7ecf265.tar.bz2
re PR middle-end/38981 (internal compiler error)
PR middle-end/38981 * tree-ssa-coalesce.c (add_coalesce): Cap the costs of coalesce pairs at MUST_COALESCE_COST-1 instead of MUST_COALESCE_COST. From-SVN: r144032
Diffstat (limited to 'gcc/tree-ssa-coalesce.c')
-rw-r--r--gcc/tree-ssa-coalesce.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/gcc/tree-ssa-coalesce.c b/gcc/tree-ssa-coalesce.c
index 3af0c32..8ac74f0 100644
--- a/gcc/tree-ssa-coalesce.c
+++ b/gcc/tree-ssa-coalesce.c
@@ -284,8 +284,7 @@ add_cost_one_coalesce (coalesce_list_p cl, int p1, int p2)
/* Add a coalesce between P1 and P2 in list CL with a cost of VALUE. */
static inline void
-add_coalesce (coalesce_list_p cl, int p1, int p2,
- int value)
+add_coalesce (coalesce_list_p cl, int p1, int p2, int value)
{
coalesce_pair_p node;
@@ -295,13 +294,13 @@ add_coalesce (coalesce_list_p cl, int p1, int p2,
node = find_coalesce_pair (cl, p1, p2, true);
- /* Once the value is MUST_COALESCE_COST, leave it that way. */
- if (node->cost != MUST_COALESCE_COST)
+ /* Once the value is at least MUST_COALESCE_COST - 1, leave it that way. */
+ if (node->cost < MUST_COALESCE_COST - 1)
{
- if (value == MUST_COALESCE_COST)
- node->cost = value;
- else
+ if (value < MUST_COALESCE_COST - 1)
node->cost += value;
+ else
+ node->cost = value;
}
}