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
This commit is contained in:
parent
f060a26123
commit
4bb07c5d37
@ -1,3 +1,9 @@
|
|||||||
|
2009-02-09 Eric Botcazou <ebotcazou@adacore.com>
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
2009-02-09 Richard Guenther <rguenther@suse.de>
|
2009-02-09 Richard Guenther <rguenther@suse.de>
|
||||||
|
|
||||||
PR middle-end/35202
|
PR middle-end/35202
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
2009-02-09 Eric Botcazou <ebotcazou@adacore.com>
|
||||||
|
|
||||||
|
* gcc.c-torture/compile/20090209-1.c: New test.
|
||||||
|
|
||||||
2009-02-06 Paolo Carlini <paolo.carlini@oracle.com>
|
2009-02-06 Paolo Carlini <paolo.carlini@oracle.com>
|
||||||
|
|
||||||
PR c++/35147
|
PR c++/35147
|
||||||
|
61
gcc/testsuite/gcc.c-torture/compile/20090209-1.c
Normal file
61
gcc/testsuite/gcc.c-torture/compile/20090209-1.c
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
/* PR middle-end/38981 */
|
||||||
|
/* Reporter: Kamaraju Kusumanchi <kamaraju@gmail.com> */
|
||||||
|
|
||||||
|
struct d_info
|
||||||
|
{
|
||||||
|
int **subs;
|
||||||
|
};
|
||||||
|
|
||||||
|
static int *
|
||||||
|
d_substitution (struct d_info *di, int prefix)
|
||||||
|
{
|
||||||
|
char c;
|
||||||
|
|
||||||
|
c='_';
|
||||||
|
|
||||||
|
if (c == '_')
|
||||||
|
{
|
||||||
|
unsigned int id;
|
||||||
|
|
||||||
|
if (c != '_')
|
||||||
|
{
|
||||||
|
do
|
||||||
|
{
|
||||||
|
unsigned int new_id;
|
||||||
|
|
||||||
|
if (new_id < id)
|
||||||
|
return 0;
|
||||||
|
id = new_id;
|
||||||
|
}
|
||||||
|
while (c != '_');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return di->subs[id];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int verbose;
|
||||||
|
int code;
|
||||||
|
int simple_len;
|
||||||
|
|
||||||
|
code=0;
|
||||||
|
simple_len=0;
|
||||||
|
verbose=0;
|
||||||
|
if (! code && prefix)
|
||||||
|
{
|
||||||
|
char peek;
|
||||||
|
peek='A';
|
||||||
|
|
||||||
|
if (peek == 'C' || peek == 'D')
|
||||||
|
verbose = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (verbose)
|
||||||
|
{
|
||||||
|
code = simple_len;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -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. */
|
/* Add a coalesce between P1 and P2 in list CL with a cost of VALUE. */
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
add_coalesce (coalesce_list_p cl, int p1, int p2,
|
add_coalesce (coalesce_list_p cl, int p1, int p2, int value)
|
||||||
int value)
|
|
||||||
{
|
{
|
||||||
coalesce_pair_p node;
|
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);
|
node = find_coalesce_pair (cl, p1, p2, true);
|
||||||
|
|
||||||
/* Once the value is MUST_COALESCE_COST, leave it that way. */
|
/* Once the value is at least MUST_COALESCE_COST - 1, leave it that way. */
|
||||||
if (node->cost != MUST_COALESCE_COST)
|
if (node->cost < MUST_COALESCE_COST - 1)
|
||||||
{
|
{
|
||||||
if (value == MUST_COALESCE_COST)
|
if (value < MUST_COALESCE_COST - 1)
|
||||||
node->cost = value;
|
|
||||||
else
|
|
||||||
node->cost += value;
|
node->cost += value;
|
||||||
|
else
|
||||||
|
node->cost = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user