diff options
author | Andrey Belevantsev <abel@ispras.ru> | 2016-03-15 18:25:41 +0300 |
---|---|---|
committer | Andrey Belevantsev <abel@gcc.gnu.org> | 2016-03-15 18:25:41 +0300 |
commit | 81fa2944ecfd7f4e8855fa51e7017a40c5f27721 (patch) | |
tree | 71775d1f1a447695f130c8937a9d8de08eab0c59 | |
parent | 74ea9ab61bdbc4f34222e0bd0b351ed1a48d46a2 (diff) | |
download | gcc-81fa2944ecfd7f4e8855fa51e7017a40c5f27721.zip gcc-81fa2944ecfd7f4e8855fa51e7017a40c5f27721.tar.gz gcc-81fa2944ecfd7f4e8855fa51e7017a40c5f27721.tar.bz2 |
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
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/sel-sched.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/pr63384.C | 12 |
4 files changed, 26 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f22fed4..ac70e8a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 2016-03-15 Andrey Belevantsev <abel@ispras.ru> + 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 <abel@ispras.ru> + PR target/64411 * sched-deps.c (get_implicit_reg_pending_clobbers): New function, factored out from ... diff --git a/gcc/sel-sched.c b/gcc/sel-sched.c index 09cf028..b795aea 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 7b5fa63..9259910 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2016-03-15 Andrey Belevantsev <abel@ispras.ru> + PR rtl-optimization/63384 + * g++.dg/pr63384.C: New test. + +2016-03-15 Andrey Belevantsev <abel@ispras.ru> + PR target/64411 * gcc.target/i386/pr64411.C: New test. diff --git a/gcc/testsuite/g++.dg/pr63384.C b/gcc/testsuite/g++.dg/pr63384.C new file mode 100644 index 0000000..b4e0784 --- /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 <class T> T **make_test_matrix() { + T **data = new T *; + for (int i = 0; i < 1000; i++) + ; +} + +template <typename T> void test() { T **c = make_test_matrix<T>(); } + +main() { test<float>(); } |