aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorIlya Enkovich <enkovich.gnu@gmail.com>2015-11-23 10:01:51 +0000
committerIlya Enkovich <ienkovich@gcc.gnu.org>2015-11-23 10:01:51 +0000
commitc245362b973e42616ac5d677539b7f3313b8c28e (patch)
tree5e55937f221635153ca002132b5d14cbfba816c5 /gcc
parent1cabb204394a2369ee7deeb518cbed038b33939b (diff)
downloadgcc-c245362b973e42616ac5d677539b7f3313b8c28e.zip
gcc-c245362b973e42616ac5d677539b7f3313b8c28e.tar.gz
gcc-c245362b973e42616ac5d677539b7f3313b8c28e.tar.bz2
re PR tree-optimization/68327 (ICE on valid code at -O3 on x86_64-linux-gnu in vect_is_simple_use, at tree-vect-stmts.c:8562)
gcc/ PR tree-optimization/68327 * tree-vect-loop.c (vect_determine_vectorization_factor): Don't compute vectype for non-relevant mask producers. * gcc/tree-vect-stmts.c (vectorizable_comparison): Check stmt relevance earlier. gcc/testsuite/ PR tree-optimization/68327 * gcc.dg/pr68327.c: New test. Co-Authored-By: Richard Biener <rguenther@suse.de> From-SVN: r230743
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr68327.c15
-rw-r--r--gcc/tree-vect-loop.c3
-rw-r--r--gcc/tree-vect-stmts.c6
5 files changed, 34 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0b7f5d4..530cf78 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+2015-11-23 Ilya Enkovich <enkovich.gnu@gmail.com>
+ Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/68327
+ * tree-vect-loop.c (vect_determine_vectorization_factor): Don't
+ compute vectype for non-relevant mask producers.
+ * gcc/tree-vect-stmts.c (vectorizable_comparison): Check stmt
+ relevance earlier.
+
2015-11-23 Tom de Vries <tom@codesourcery.com>
PR tree-optimization/68460
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 2861d00..142347d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2015-11-23 Ilya Enkovich <enkovich.gnu@gmail.com>
+
+ PR tree-optimization/68327
+ * gcc.dg/pr68327.c: New test.
+
2015-11-23 Tom de Vries <tom@codesourcery.com>
PR tree-optimization/68460
diff --git a/gcc/testsuite/gcc.dg/pr68327.c b/gcc/testsuite/gcc.dg/pr68327.c
new file mode 100644
index 0000000..c3e6a94
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr68327.c
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+/* { dg-options "-O3" } */
+
+int a, d;
+char b, c;
+
+void
+fn1 ()
+{
+ int i = 0;
+ for (; i < 1; i++)
+ d = 1;
+ for (; b; b++)
+ a = 1 && (d & b);
+}
diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c
index 41e5031..cc272b2 100644
--- a/gcc/tree-vect-loop.c
+++ b/gcc/tree-vect-loop.c
@@ -439,7 +439,8 @@ vect_determine_vectorization_factor (loop_vec_info loop_vinfo)
compute a factor. */
if (TREE_CODE (scalar_type) == BOOLEAN_TYPE)
{
- mask_producers.safe_push (stmt_info);
+ if (STMT_VINFO_RELEVANT_P (stmt_info))
+ mask_producers.safe_push (stmt_info);
bool_result = true;
if (gimple_code (stmt) == GIMPLE_ASSIGN
diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c
index 4bb58b9..687f982 100644
--- a/gcc/tree-vect-stmts.c
+++ b/gcc/tree-vect-stmts.c
@@ -7590,6 +7590,9 @@ vectorizable_comparison (gimple *stmt, gimple_stmt_iterator *gsi,
tree mask_type;
tree mask;
+ if (!STMT_VINFO_RELEVANT_P (stmt_info) && !bb_vinfo)
+ return false;
+
if (!VECTOR_BOOLEAN_TYPE_P (vectype))
return false;
@@ -7602,9 +7605,6 @@ vectorizable_comparison (gimple *stmt, gimple_stmt_iterator *gsi,
ncopies = LOOP_VINFO_VECT_FACTOR (loop_vinfo) / nunits;
gcc_assert (ncopies >= 1);
- if (!STMT_VINFO_RELEVANT_P (stmt_info) && !bb_vinfo)
- return false;
-
if (STMT_VINFO_DEF_TYPE (stmt_info) != vect_internal_def
&& !(STMT_VINFO_DEF_TYPE (stmt_info) == vect_nested_cycle
&& reduc_def))