]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR tree-optimization/51015 (ice in vect_determine_vectorization_factor with -O3)
authorIra Rosen <ira.rosen@linaro.org>
Wed, 9 Nov 2011 06:41:59 +0000 (06:41 +0000)
committerIra Rosen <irar@gcc.gnu.org>
Wed, 9 Nov 2011 06:41:59 +0000 (06:41 +0000)
        PR tree-optimization/51015
        * tree-vect-loop.c (vect_determine_vectorization_factor): Expect
        vectype to be set for pattern def stmts.

From-SVN: r181191

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/vect/pr51015.c [new file with mode: 0644]
gcc/tree-vect-loop.c

index 00f553278282a532825ae24b8f0086fb631923fc..1c01e18b6badc9b446841513cefe54b11180596c 100644 (file)
@@ -1,3 +1,9 @@
+2011-11-09  Ira Rosen  <ira.rosen@linaro.org>
+
+       PR tree-optimization/51015
+       * tree-vect-loop.c (vect_determine_vectorization_factor): Expect
+       vectype to be set for pattern def stmts.
+
 2011-11-09  Alan Modra  <amodra@gmail.com>
 
        * function.c (bb_active_p): Delete.
index 0b7167b0dd49de1ea1daf09ff9150d0395d1ded9..80a36622b8cef15b95d08075ae4b68978dc12304 100644 (file)
@@ -1,3 +1,8 @@
+2011-11-09  Ira Rosen  <ira.rosen@linaro.org>
+
+       PR tree-optimization/51015
+       * gcc.dg/vect/pr51015.c: New test.
+
 2011-11-08  David S. Miller  <davem@davemloft.net>
 
        * lib/target-supports.exp (check_effective_target_sparc_vis): New.
diff --git a/gcc/testsuite/gcc.dg/vect/pr51015.c b/gcc/testsuite/gcc.dg/vect/pr51015.c
new file mode 100644 (file)
index 0000000..bc29b0b
--- /dev/null
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+
+typedef unsigned long long __u64;
+static __u64 ext2_max_sizes[16 - 10 + 1];
+
+void e2fsck_pass1()
+{
+ int i;
+ __u64 max_sizes;
+
+ for (i = 10; i <= 16; i++) {
+  max_sizes = 12 + (1ULL << ((i) - 2));
+  max_sizes = max_sizes + (1ULL << ((i) - 2)) * (1ULL << ((i) - 2));
+  max_sizes = max_sizes + (1ULL << ((i) - 2)) * (1ULL << ((i) - 2)) * (1ULL <<((i) - 2));
+  ext2_max_sizes[i - 10] = max_sizes;
+ }
+}
+
+/* { dg-final { cleanup-tree-dump "vect" } } */
index a209b4bb14db2433f0e84e9591cc56f66d8bfa03..dca1c34a1f6423a885a85995f0107468059639e5 100644 (file)
@@ -342,10 +342,12 @@ vect_determine_vectorization_factor (loop_vec_info loop_vinfo)
          if (STMT_VINFO_VECTYPE (stmt_info))
            {
              /* The only case when a vectype had been already set is for stmts
-                that contain a dataref, or for "pattern-stmts" (stmts generated
-                by the vectorizer to represent/replace a certain idiom).  */
+                that contain a dataref, or for "pattern-stmts" (stmts
+                generated by the vectorizer to represent/replace a certain
+                idiom).  */
              gcc_assert (STMT_VINFO_DATA_REF (stmt_info)
-                         || is_pattern_stmt_p (stmt_info));
+                         || is_pattern_stmt_p (stmt_info)
+                         || pattern_def);
              vectype = STMT_VINFO_VECTYPE (stmt_info);
            }
          else