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
This commit is contained in:
Jeff Law 2016-01-21 15:58:29 -07:00
parent 7f370a2b0c
commit 38a516638d
4 changed files with 45 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2016-01-21 Roman Zhuykov <zhroma@ispras.ru>
PR target/69252
* modulo-sched.c (optimize_sc): Allow branch-scheduling to add a new
first stage.
2016-01-21 Jeff Law <law@redhat.com>
PR middle-end/69347

View File

@ -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);
}

View File

@ -1,3 +1,8 @@
2016-01-21 Martin Sebor <msebor@redhat.com>
PR target/69252
* gcc.target/powerpc/pr69252.c: New test.
2016-01-21 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/65996

View File

@ -0,0 +1,28 @@
/* PR target/69252 - [4.9/5/6 Regression] gcc.dg/vect/vect-iv-9.c FAILs
with -Os -fmodulo-sched -fmodulo-sched-allow-regmoves -fsched-pressure */
/* { dg-do run } */
/* { dg-options "-Os -fmodulo-sched -fmodulo-sched-allow-regmoves -fsched-pressure " } */
#define N 26
int a[N];
__attribute__ ((noinline, noclone))
int main1 (int X)
{
int s = X;
int i;
for (i = 0; i < N; i++)
s += (i + a[i]);
return s;
}
int
main (void)
{
int s, i;
for (i = 0; i < N; i++)
a[i] = 2 * i;
s = main1 (3);
if (s != 978)
__builtin_abort ();
return 0;
}