diff options
author | Alexander Monakov <amonakov@ispras.ru> | 2018-04-11 13:40:07 +0300 |
---|---|---|
committer | Alexander Monakov <amonakov@gcc.gnu.org> | 2018-04-11 13:40:07 +0300 |
commit | 50f78bded40cb2b7d44480d8ac6d0e483631ade7 (patch) | |
tree | 639a12867115343cb108947c74325120b139c556 | |
parent | 23d87577a3a02b11858c7de68313ebcc45445a13 (diff) | |
download | gcc-50f78bded40cb2b7d44480d8ac6d0e483631ade7.zip gcc-50f78bded40cb2b7d44480d8ac6d0e483631ade7.tar.gz gcc-50f78bded40cb2b7d44480d8ac6d0e483631ade7.tar.bz2 |
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
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/sel-sched-ir.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr84659.c | 19 |
4 files changed, 33 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ed58fc2..d70b106 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +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> PR debug/85302 diff --git a/gcc/sel-sched-ir.c b/gcc/sel-sched-ir.c index ee97052..50a7daa 100644 --- a/gcc/sel-sched-ir.c +++ b/gcc/sel-sched-ir.c @@ -30,6 +30,7 @@ along with GCC; see the file COPYING3. If not see #include "cfgrtl.h" #include "cfganal.h" #include "cfgbuild.h" +#include "cfgcleanup.h" #include "insn-config.h" #include "insn-attr.h" #include "recog.h" @@ -6121,6 +6122,9 @@ make_regions_from_loop_nest (struct loop *loop) 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. */ loop_optimizer_init (LOOPS_HAVE_PREHEADERS | LOOPS_HAVE_FALLTHRU_PREHEADERS diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9f8b16a..999ce09 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +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> PR debug/85302 diff --git a/gcc/testsuite/gcc.dg/pr84659.c b/gcc/testsuite/gcc.dg/pr84659.c new file mode 100644 index 0000000..94c885f --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr84659.c @@ -0,0 +1,19 @@ +/* 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 (;;) + { + } +} |