modulo-sched: fix branch scheduling issue (PR84032)

PR rtl-optimization/84032
	* modulo-sched.c (ps_insn_find_column): Change condition so that
	branch will always be the last insn in a row inside partial
	schedule.

testsuite:

	PR rtl-optimization/84032
	* gcc.dg/pr84032.c: New test.

From-SVN: r270511
This commit is contained in:
Roman Zhuykov 2019-04-23 12:53:43 +00:00
parent 038bc9bfd6
commit 8d64622fce
4 changed files with 38 additions and 5 deletions

View file

@ -1,3 +1,10 @@
2019-04-23 Roman Zhuykov <zhroma@ispras.ru>
PR rtl-optimization/84032
* modulo-sched.c (ps_insn_find_column): Change condition so that
branch will always be the last insn in a row inside partial
schedule.
2019-04-23 Richard Biener <rguenther@suse.de>
PR debug/90131

View file

@ -2996,9 +2996,7 @@ ps_insn_find_column (partial_schedule_ptr ps, ps_insn_ptr ps_i,
last_must_precede = next_ps_i;
}
/* The closing branch must be the last in the row. */
if (must_precede
&& bitmap_bit_p (must_precede, next_ps_i->id)
&& JUMP_P (ps_rtl_insn (ps, next_ps_i->id)))
if (JUMP_P (ps_rtl_insn (ps, next_ps_i->id)))
return false;
last_in_row = next_ps_i;

View file

@ -1,12 +1,17 @@
2019-04-23 Roman Zhuykov <zhroma@ispras.ru>
PR rtl-optimization/84032
* gcc.dg/pr84032.c: New test.
2018-04-23 Bin Cheng <bin.cheng@linux.alibaba.com>
PR tree-optimization/90078
* gcc/testsuite/g++.dg/tree-ssa/pr90078.C: New test.
* g++.dg/tree-ssa/pr90078.C: New test.
2018-04-23 Bin Cheng <bin.cheng@linux.alibaba.com>
PR tree-optimization/90021
* gcc/testsuite/gfortran.dg/pr90021.f90: New test.
* gfortran.dg/pr90021.f90: New test.
2019-04-22 Steven G. Kargl <kargl@gcc.gnu.org>

View file

@ -0,0 +1,23 @@
/* PR rtl-optimization/84032 */
/* { dg-do compile } */
/* { dg-options "-O1 -fmodulo-sched" } */
/* { dg-additional-options "-mcpu=power6" { target { powerpc-*-* } } } */
void
yr (int cm)
{
int ka = cm;
for (;;)
{
short int m0;
for (m0 = 0; m0 < 6; ++m0)
{
ka &= 1;
cm *= 2;
}
ka = (ka == 0) ? cm : 0;
}
}