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:
parent
038bc9bfd6
commit
8d64622fce
4 changed files with 38 additions and 5 deletions
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
23
gcc/testsuite/gcc.dg/pr84032.c
Normal file
23
gcc/testsuite/gcc.dg/pr84032.c
Normal 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;
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue