Commit 50f78bde by Alexander Monakov Committed by Alexander Monakov

sel-sched: run cleanup_cfg just before loop_optimizer_init (PR 84659)

	PR rtl-optimization/85659
	* sel-sched-ir.c (sel_init_pipelining): Invoke cleanup_cfg.

testsuite/
	* gcc.dg/pr84659.c: New test.

From-SVN: r259313
parent 23d87577
2018-04-11 Alexander Monakov <amonakov@ispras.ru>
PR rtl-optimization/85659
* sel-sched-ir.c (sel_init_pipelining): Invoke cleanup_cfg.
2018-04-11 Jakub Jelinek <jakub@redhat.com> 2018-04-11 Jakub Jelinek <jakub@redhat.com>
PR debug/85302 PR debug/85302
......
...@@ -30,6 +30,7 @@ along with GCC; see the file COPYING3. If not see ...@@ -30,6 +30,7 @@ along with GCC; see the file COPYING3. If not see
#include "cfgrtl.h" #include "cfgrtl.h"
#include "cfganal.h" #include "cfganal.h"
#include "cfgbuild.h" #include "cfgbuild.h"
#include "cfgcleanup.h"
#include "insn-config.h" #include "insn-config.h"
#include "insn-attr.h" #include "insn-attr.h"
#include "recog.h" #include "recog.h"
...@@ -6121,6 +6122,9 @@ make_regions_from_loop_nest (struct loop *loop) ...@@ -6121,6 +6122,9 @@ make_regions_from_loop_nest (struct loop *loop)
void void
sel_init_pipelining (void) sel_init_pipelining (void)
{ {
/* Remove empty blocks: their presence can break assumptions elsewhere,
e.g. the logic to invoke update_liveness_on_insn in sel_region_init. */
cleanup_cfg (0);
/* Collect loop information to be used in outer loops pipelining. */ /* Collect loop information to be used in outer loops pipelining. */
loop_optimizer_init (LOOPS_HAVE_PREHEADERS loop_optimizer_init (LOOPS_HAVE_PREHEADERS
| LOOPS_HAVE_FALLTHRU_PREHEADERS | LOOPS_HAVE_FALLTHRU_PREHEADERS
......
2018-04-11 Alexander Monakov <amonakov@ispras.ru>
PR rtl-optimization/85659
* gcc.dg/pr84659.c: New test.
2018-04-11 Jakub Jelinek <jakub@redhat.com> 2018-04-11 Jakub Jelinek <jakub@redhat.com>
PR debug/85302 PR debug/85302
......
/* PR rtl-optimization/84659 */
/* { dg-do compile { target powerpc*-*-* ia64-*-* i?86-*-* x86_64-*-* } } */
/* { dg-options "-O2 -fselective-scheduling -fsel-sched-pipelining -fno-split-wide-types -fno-strict-aliasing -fno-tree-dce" } */
void
jk (int **lq, int *k4, long long int qv, int od)
{
while (**lq < 1)
{
int uo;
uo = ((od == 0) ? qv : *k4) != 1;
++**lq;
}
for (;;)
{
}
}
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