diff options
Diffstat (limited to 'gcc/sched-rgn.c')
-rw-r--r-- | gcc/sched-rgn.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/gcc/sched-rgn.c b/gcc/sched-rgn.c index 406dc1facd6..0573b6a6e8f 100644 --- a/gcc/sched-rgn.c +++ b/gcc/sched-rgn.c @@ -79,6 +79,9 @@ static int is_cfg_nonregular (void); /* Number of regions in the procedure. */ int nr_regions = 0; +/* Same as above before adding any new regions. */ +static int nr_regions_initial = 0; + /* Table of region descriptions. */ region *rgn_table = NULL; @@ -1064,6 +1067,7 @@ haifa_find_rgns (void) BLOCK_TO_BB (bb->index) = 0; } + nr_regions_initial = nr_regions; free (max_hdr); free (degree); free (stack); @@ -2991,6 +2995,15 @@ schedule_region (int rgn) rgn_n_insns = 0; + /* Do not support register pressure sensitive scheduling for the new regions + as we don't update the liveness info for them. */ + if (rgn >= nr_regions_initial) + { + if (sched_pressure != SCHED_PRESSURE_NONE) + free_global_sched_pressure_data (); + sched_pressure = SCHED_PRESSURE_NONE; + } + rgn_setup_region (rgn); /* Don't schedule region that is marked by |