Commit 38a51663 by Jeff Law

re PR target/69252 (gcc.dg/vect/vect-iv-9.c FAILs with -Os -fmodulo-sched…

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
parent 7f370a2b
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
......
......@@ -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);
}
......
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
......
/* 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;
}
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