gcse.c (gcse_main): Avoid global optimizations if we have a large number of basic blocks and the...
* gcse.c (gcse_main): Avoid global optimizations if we have a large number of basic blocks and the ratio of edges to blocks is high. (delete_null_pointer_checks): Likewise. From-SVN: r29882
This commit is contained in:
parent
ba80674579
commit
55f7891bb7
@ -1,3 +1,10 @@
|
|||||||
|
Sat Oct 9 23:26:55 1999 Jeffrey A Law (law@cygnus.com)
|
||||||
|
|
||||||
|
* gcse.c (gcse_main): Avoid global optimizations if we have a
|
||||||
|
large number of basic blocks and the ratio of edges to blocks
|
||||||
|
is high.
|
||||||
|
(delete_null_pointer_checks): Likewise.
|
||||||
|
|
||||||
Sat Oct 9 23:16:01 1999 Ken Raeburn <raeburn@mit.edu>
|
Sat Oct 9 23:16:01 1999 Ken Raeburn <raeburn@mit.edu>
|
||||||
|
|
||||||
* c-common.c (check_format_info): Warn if format string isn't a
|
* c-common.c (check_format_info): Warn if format string isn't a
|
||||||
|
30
gcc/gcse.c
30
gcc/gcse.c
@ -672,6 +672,21 @@ gcse_main (f, file)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Trying to perform global optimizations on flow graphs which have
|
||||||
|
a high connectivity will take a long time and is unlikely to be
|
||||||
|
particularly useful.
|
||||||
|
|
||||||
|
In normal circumstances a cfg should have about twice has many edges
|
||||||
|
as blocks. But we do not want to punish small functions which have
|
||||||
|
a couple switch statements. So we require a relatively large number
|
||||||
|
of basic blocks and the ratio of edges to blocks to be high. */
|
||||||
|
if (n_basic_blocks > 1000 && n_edges / n_basic_blocks >= 20)
|
||||||
|
{
|
||||||
|
/* Free storage allocated by find_basic_blocks. */
|
||||||
|
free_basic_block_vars (0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* See what modes support reg/reg copy operations. */
|
/* See what modes support reg/reg copy operations. */
|
||||||
if (! can_copy_init_p)
|
if (! can_copy_init_p)
|
||||||
{
|
{
|
||||||
@ -4908,6 +4923,21 @@ delete_null_pointer_checks (f)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Trying to perform global optimizations on flow graphs which have
|
||||||
|
a high connectivity will take a long time and is unlikely to be
|
||||||
|
particularly useful.
|
||||||
|
|
||||||
|
In normal circumstances a cfg should have about twice has many edges
|
||||||
|
as blocks. But we do not want to punish small functions which have
|
||||||
|
a couple switch statements. So we require a relatively large number
|
||||||
|
of basic blocks and the ratio of edges to blocks to be high. */
|
||||||
|
if (n_basic_blocks > 1000 && n_edges / n_basic_blocks >= 20)
|
||||||
|
{
|
||||||
|
/* Free storage allocated by find_basic_blocks. */
|
||||||
|
free_basic_block_vars (0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* We need predecessor/successor lists as well as pred/succ counts for
|
/* We need predecessor/successor lists as well as pred/succ counts for
|
||||||
each basic block. */
|
each basic block. */
|
||||||
s_preds = (int_list_ptr *) alloca (n_basic_blocks * sizeof (int_list_ptr));
|
s_preds = (int_list_ptr *) alloca (n_basic_blocks * sizeof (int_list_ptr));
|
||||||
|
Loading…
Reference in New Issue
Block a user