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
2 changed files with 37 additions and 0 deletions
|
@ -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>
|
||||
|
||||
* 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;
|
||||
}
|
||||
|
||||
/* 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. */
|
||||
if (! can_copy_init_p)
|
||||
{
|
||||
|
@ -4908,6 +4923,21 @@ delete_null_pointer_checks (f)
|
|||
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
|
||||
each basic block. */
|
||||
s_preds = (int_list_ptr *) alloca (n_basic_blocks * sizeof (int_list_ptr));
|
||||
|
|
Loading…
Add table
Reference in a new issue