diff options
author | Richard Biener <rguenther@suse.de> | 2018-11-29 13:33:59 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2018-11-29 13:33:59 +0000 |
commit | 154fb72b6d8e35b1a97fd665dd43c4f215aea1b1 (patch) | |
tree | 56d0df8f5a38652c3e2293cfdfed3b981d21b28c /gcc | |
parent | 8c9b385288609fa4af9df746464b26130c9034b1 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/pr88243.c | 18 | ||||
-rw-r--r-- | gcc/tree-vect-patterns.c | 10 |
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) { |