From 81fa2944ecfd7f4e8855fa51e7017a40c5f27721 Mon Sep 17 00:00:00 2001 From: Andrey Belevantsev Date: Tue, 15 Mar 2016 18:25:41 +0300 Subject: [PATCH] re PR rtl-optimization/63384 (scheduler loops on endless fence list with -fselective-scheduling2 on x86) gcc/ PR rtl-optimization/63384 * sel-sched.c (invoke_aftermath_hooks): Do not decrease issue_more on DEBUG_INSN_P insns. testsuite/ PR rtl-optimization/63384 * g++.dg/pr63384.C: New test. From-SVN: r234217 --- gcc/ChangeLog | 6 ++++++ gcc/sel-sched.c | 5 +++-- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/pr63384.C | 12 ++++++++++++ 4 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/g++.dg/pr63384.C diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f22fed4bd0f..ac70e8ac8d9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2016-03-15 Andrey Belevantsev + + PR rtl-optimization/63384 + * sel-sched.c (invoke_aftermath_hooks): Do not decrease issue_more on + DEBUG_INSN_P insns. + 2016-03-15 Andrey Belevantsev PR target/64411 diff --git a/gcc/sel-sched.c b/gcc/sel-sched.c index 09cf0284603..b795aea0ac2 100644 --- a/gcc/sel-sched.c +++ b/gcc/sel-sched.c @@ -4262,8 +4262,9 @@ invoke_aftermath_hooks (fence_t fence, rtx_insn *best_insn, int issue_more) issue_more); memcpy (FENCE_STATE (fence), curr_state, dfa_state_size); } - else if (GET_CODE (PATTERN (best_insn)) != USE - && GET_CODE (PATTERN (best_insn)) != CLOBBER) + else if (!DEBUG_INSN_P (best_insn) + && GET_CODE (PATTERN (best_insn)) != USE + && GET_CODE (PATTERN (best_insn)) != CLOBBER) issue_more--; return issue_more; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7b5fa632e1f..9259910cb5e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-03-15 Andrey Belevantsev + + PR rtl-optimization/63384 + * g++.dg/pr63384.C: New test. + 2016-03-15 Andrey Belevantsev PR target/64411 diff --git a/gcc/testsuite/g++.dg/pr63384.C b/gcc/testsuite/g++.dg/pr63384.C new file mode 100644 index 00000000000..b4e0784960b --- /dev/null +++ b/gcc/testsuite/g++.dg/pr63384.C @@ -0,0 +1,12 @@ +/* { dg-do compile { target powerpc*-*-* ia64-*-* i?86-*-* x86_64-*-* } } */ +/* { dg-options "-O2 -fselective-scheduling2 -fsel-sched-pipelining -fsel-sched-pipelining-outer-loops -fsel-sched-reschedule-pipelined -fvar-tracking-assignments-toggle -ftree-vectorize" } */ + +template T **make_test_matrix() { + T **data = new T *; + for (int i = 0; i < 1000; i++) + ; +} + +template void test() { T **c = make_test_matrix(); } + +main() { test(); } -- 2.30.2