aboutsummaryrefslogtreecommitdiff
path: root/gcc/modulo-sched.c
diff options
context:
space:
mode:
authorJeff Law <law@gcc.gnu.org>2016-01-21 15:58:29 -0700
committerJeff Law <law@gcc.gnu.org>2016-01-21 15:58:29 -0700
commit38a516638d2ea1fd4dade9bd68ec720ff6fe52f0 (patch)
tree42264c67bcd24264dc9f2bd7ffa1da30ddf7b370 /gcc/modulo-sched.c
parent7f370a2b0c2e613f1dcd47909f82e32033ae2381 (diff)
downloadgcc-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.c7
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);
}