aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorIlya Enkovich <enkovich.gnu@gmail.com>2015-12-08 07:16:04 +0000
committerIlya Enkovich <ienkovich@gcc.gnu.org>2015-12-08 07:16:04 +0000
commitdc9604d432eb8fd23e9371cfe4016237b4ec1449 (patch)
tree6c615ae7a6f18ff469e3b407dca5ef968f13fde0 /gcc
parent27d815b2367e440d9e1e234cfca2fe1ec45b85e1 (diff)
downloadgcc-dc9604d432eb8fd23e9371cfe4016237b4ec1449.zip
gcc-dc9604d432eb8fd23e9371cfe4016237b4ec1449.tar.gz
gcc-dc9604d432eb8fd23e9371cfe4016237b4ec1449.tar.bz2
re PR tree-optimization/68766 (internal compiler error: in expand_LOOP_VECTORIZED, at internal-fn.c:1905)
gcc/ PR tree-optimization/68766 * tree-vectorizer.c (vectorize_loops): Check for if-converted loops when debug counters are used. gcc/testsuite/ PR tree-optimization/68766 * gcc.dg/pr68766.c: New test. From-SVN: r231395
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr68766.c19
-rw-r--r--gcc/tree-vectorizer.c8
4 files changed, 37 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 858d2b8..de4cdef 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2015-12-08 Ilya Enkovich <enkovich.gnu@gmail.com>
+
+ PR tree-optimization/68766
+ * tree-vectorizer.c (vectorize_loops): Check for
+ if-converted loops when debug counters are used.
+
2015-12-07 DJ Delorie <dj@redhat.com>
* config/rl78/constraints.md (Wfr): Change to be a non-memory
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index fec47e1..7feb510 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2015-12-08 Ilya Enkovich <enkovich.gnu@gmail.com>
+
+ PR tree-optimization/68766
+ * gcc.dg/pr68766.c: New test.
+
2015-12-07 Eric Botcazou <ebotcazou@adacore.com>
* gcc.target/sparc/struct-ret-check.c: Rename to...
diff --git a/gcc/testsuite/gcc.dg/pr68766.c b/gcc/testsuite/gcc.dg/pr68766.c
new file mode 100644
index 0000000..a0d549b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr68766.c
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-vectorize -fdbg-cnt=vect_loop:1" } */
+/* { dg-additional-options "-mavx2" { target { i?86-*-* x86_64-*-* } } } */
+/* { dg-prune-output "dbg_cnt 'vect_loop' set to 1" } */
+
+int a, b, g, h;
+int c[58];
+int d[58];
+int fn1() {
+ for (; g; g++)
+ if (a)
+ c[g] = b;
+}
+
+int fn2() {
+ fn1();
+ for (; h; h++)
+ d[h] = 0;
+}
diff --git a/gcc/tree-vectorizer.c b/gcc/tree-vectorizer.c
index b721c56..c496c4b 100644
--- a/gcc/tree-vectorizer.c
+++ b/gcc/tree-vectorizer.c
@@ -536,7 +536,13 @@ vectorize_loops (void)
continue;
if (!dbg_cnt (vect_loop))
- break;
+ {
+ /* We may miss some if-converted loops due to
+ debug counter. Set any_ifcvt_loops to visit
+ them at finalization. */
+ any_ifcvt_loops = true;
+ break;
+ }
gimple *loop_vectorized_call = vect_loop_vectorized_call (loop);
if (loop_vectorized_call)