Commit 11b8091f by Eric Botcazou Committed by Eric Botcazou

* ira.c (ira): Use simple LRA algorithm when not optimizing.

From-SVN: r279550
parent d3769410
2019-12-18 Eric Botcazou <ebotcazou@adacore.com>
* ira.c (ira): Use simple LRA algorithm when not optimizing.
2019-12-18 Thomas Schwinge <thomas@codesourcery.com> 2019-12-18 Thomas Schwinge <thomas@codesourcery.com>
* gimplify.c (gimplify_omp_target_update): Elaborate 'exit data' * gimplify.c (gimplify_omp_target_update): Elaborate 'exit data'
...@@ -5192,8 +5192,6 @@ ira (FILE *f) ...@@ -5192,8 +5192,6 @@ ira (FILE *f)
int ira_max_point_before_emit; int ira_max_point_before_emit;
bool saved_flag_caller_saves = flag_caller_saves; bool saved_flag_caller_saves = flag_caller_saves;
enum ira_region saved_flag_ira_region = flag_ira_region; enum ira_region saved_flag_ira_region = flag_ira_region;
unsigned int i;
int num_used_regs = 0;
clear_bb_flags (); clear_bb_flags ();
...@@ -5207,18 +5205,28 @@ ira (FILE *f) ...@@ -5207,18 +5205,28 @@ ira (FILE *f)
/* Perform target specific PIC register initialization. */ /* Perform target specific PIC register initialization. */
targetm.init_pic_reg (); targetm.init_pic_reg ();
ira_conflicts_p = optimize > 0; if (optimize)
{
ira_conflicts_p = true;
/* Determine the number of pseudos actually requiring coloring. */ /* Determine the number of pseudos actually requiring coloring. */
for (i = FIRST_PSEUDO_REGISTER; i < DF_REG_SIZE (df); i++) unsigned int num_used_regs = 0;
num_used_regs += !!(DF_REG_USE_COUNT (i) + DF_REG_DEF_COUNT (i)); for (unsigned int i = FIRST_PSEUDO_REGISTER; i < DF_REG_SIZE (df); i++)
if (DF_REG_DEF_COUNT (i) || DF_REG_USE_COUNT (i))
num_used_regs++;
/* If there are too many pseudos and/or basic blocks (e.g. 10K /* If there are too many pseudos and/or basic blocks (e.g. 10K
pseudos and 10K blocks or 100K pseudos and 1K blocks), we will pseudos and 10K blocks or 100K pseudos and 1K blocks), we will
use simplified and faster algorithms in LRA. */ use simplified and faster algorithms in LRA. */
lra_simple_p lra_simple_p
= (ira_use_lra_p = ira_use_lra_p
&& num_used_regs >= (1 << 26) / last_basic_block_for_fn (cfun)); && num_used_regs >= (1U << 26) / last_basic_block_for_fn (cfun);
}
else
{
ira_conflicts_p = false;
lra_simple_p = ira_use_lra_p;
}
if (lra_simple_p) if (lra_simple_p)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment