aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2018-11-29 13:33:59 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2018-11-29 13:33:59 +0000
commit154fb72b6d8e35b1a97fd665dd43c4f215aea1b1 (patch)
tree56d0df8f5a38652c3e2293cfdfed3b981d21b28c /gcc
parent8c9b385288609fa4af9df746464b26130c9034b1 (diff)
downloadgcc-154fb72b6d8e35b1a97fd665dd43c4f215aea1b1.zip
gcc-154fb72b6d8e35b1a97fd665dd43c4f215aea1b1.tar.gz
gcc-154fb72b6d8e35b1a97fd665dd43c4f215aea1b1.tar.bz2
re PR tree-optimization/88243 (ice in vect_create_epilog_for_reduction, at tree-vect-loop.c:4689)
2018-11-29 Richard Biener <rguenther@suse.de> PR tree-optimization/88243 * tree-vect-patterns.c (vect_mark_pattern_stmts): Set the def type of all pattern-sequence stmts to vect_internal_def. * gcc.dg/torture/pr88243.c: New testcase. From-SVN: r266615
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr88243.c18
-rw-r--r--gcc/tree-vect-patterns.c10
4 files changed, 38 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 91a1703..b35b26f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2018-11-29 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/88243
+ * tree-vect-patterns.c (vect_mark_pattern_stmts): Set the def
+ type of all pattern-sequence stmts to vect_internal_def.
+
2018-11-29 Andre Vieira <andre.simoesdiasvieira@arm.com>
PR target/88224
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 1764265..18a921c 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2018-11-29 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/88243
+ * gcc.dg/torture/pr88243.c: New testcase.
+
2018-11-29 Jakub Jelinek <jakub@redhat.com>
PR c++/87539
diff --git a/gcc/testsuite/gcc.dg/torture/pr88243.c b/gcc/testsuite/gcc.dg/torture/pr88243.c
new file mode 100644
index 0000000..17ca38f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr88243.c
@@ -0,0 +1,18 @@
+/* { dg-do compile } */
+
+int a, b, c;
+
+void d()
+{
+ int e, f;
+ for (; a; a++)
+ {
+ e = (__UINTPTR_TYPE__)d;
+ b = 0;
+ for (; b < 2; b++)
+ {
+ f = e = e / 2;
+ c = c + f;
+ }
+ }
+}
diff --git a/gcc/tree-vect-patterns.c b/gcc/tree-vect-patterns.c
index 2b56d85..39b6f82 100644
--- a/gcc/tree-vect-patterns.c
+++ b/gcc/tree-vect-patterns.c
@@ -4723,7 +4723,15 @@ vect_mark_pattern_stmts (stmt_vec_info orig_stmt_info, gimple *pattern_stmt,
if (def_seq)
for (gimple_stmt_iterator si = gsi_start (def_seq);
!gsi_end_p (si); gsi_next (&si))
- vect_init_pattern_stmt (gsi_stmt (si), orig_stmt_info, pattern_vectype);
+ {
+ stmt_vec_info pattern_stmt_info
+ = vect_init_pattern_stmt (gsi_stmt (si),
+ orig_stmt_info, pattern_vectype);
+ /* Stmts in the def sequence are not vectorizable cycle or
+ induction defs, instead they should all be vect_internal_def
+ feeding the main pattern stmt which retains this def type. */
+ STMT_VINFO_DEF_TYPE (pattern_stmt_info) = vect_internal_def;
+ }
if (orig_pattern_stmt)
{