diff options
author | Jeff Law <law@gcc.gnu.org> | 2016-01-21 15:58:29 -0700 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 2016-01-21 15:58:29 -0700 |
commit | 38a516638d2ea1fd4dade9bd68ec720ff6fe52f0 (patch) | |
tree | 42264c67bcd24264dc9f2bd7ffa1da30ddf7b370 /gcc/modulo-sched.c | |
parent | 7f370a2b0c2e613f1dcd47909f82e32033ae2381 (diff) | |
download | gcc-38a516638d2ea1fd4dade9bd68ec720ff6fe52f0.zip gcc-38a516638d2ea1fd4dade9bd68ec720ff6fe52f0.tar.gz gcc-38a516638d2ea1fd4dade9bd68ec720ff6fe52f0.tar.bz2 |
re PR target/69252 (gcc.dg/vect/vect-iv-9.c FAILs with -Os -fmodulo-sched -fmodulo-sched-allow-regmoves -fsched-pressure)
PR target/69252
* modulo-sched.c (optimize_sc): Allow branch-scheduling to add a new
first stage.
PR target/69252
* gcc.target/powerpc/pr69252.c: New test.
From-SVN: r232712
Diffstat (limited to 'gcc/modulo-sched.c')
-rw-r--r-- | gcc/modulo-sched.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/modulo-sched.c b/gcc/modulo-sched.c index 3b6930f..5dde66c 100644 --- a/gcc/modulo-sched.c +++ b/gcc/modulo-sched.c @@ -985,7 +985,7 @@ optimize_sc (partial_schedule_ptr ps, ddg_ptr g) int row = SMODULO (branch_cycle, ps->ii); int num_splits = 0; sbitmap must_precede, must_follow, tmp_precede, tmp_follow; - int c; + int min_cycle, c; if (dump_file) fprintf (dump_file, "\nTrying to schedule node %d " @@ -1040,6 +1040,7 @@ optimize_sc (partial_schedule_ptr ps, ddg_ptr g) if (next_ps_i->id == g->closing_branch->cuid) break; + min_cycle = PS_MIN_CYCLE (ps) - SMODULO (PS_MIN_CYCLE (ps), ps->ii); remove_node_from_ps (ps, next_ps_i); success = try_scheduling_node_in_cycle (ps, g->closing_branch->cuid, c, @@ -1079,6 +1080,10 @@ optimize_sc (partial_schedule_ptr ps, ddg_ptr g) ok = true; } + /* This might have been added to a new first stage. */ + if (PS_MIN_CYCLE (ps) < min_cycle) + reset_sched_times (ps, 0); + free (must_precede); free (must_follow); } |