re PR middle-end/49603 (177.mesa in SPEC CPU 2000 failed to build)
authorRichard Guenther <rguenther@suse.de>
Fri, 1 Jul 2011 06:56:18 +0000 (06:56 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Fri, 1 Jul 2011 06:56:18 +0000 (06:56 +0000)
2011-07-01  Richard Guenther  <rguenther@suse.de>

PR tree-optimization/49603
* tree-vect-stmts.c (vectorizable_load): Remove unnecessary
assert.

* gcc.dg/torture/pr49603.c: New testcase.

From-SVN: r175746

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/torture/pr49603.c [new file with mode: 0644]
gcc/tree-vect-stmts.c

index 8fc1cd55b8e5e5d8c31210edbbd048c4491f7e9f..6c4a488b9f99aca394b6dbc862425c91ad0d3854 100644 (file)
@@ -1,3 +1,9 @@
+2011-07-01  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/49603
+       * tree-vect-stmts.c (vectorizable_load): Remove unnecessary
+       assert.
+
 2011-06-30  Martin Jambor  <mjambor@suse.cz>
 
        * tree-sra.c (struct access): Rename total_scalarization to
index 7715ae0e32e625b97a31a74c803271d2bc005176..17046d6391b6654a5c40737a8d43d1e4e28c97c5 100644 (file)
@@ -1,3 +1,8 @@
+2011-07-01  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/49603
+       * gcc.dg/torture/pr49603.c: New testcase.
+
 2011-06-30  Jason Merrill  <jason@redhat.com>
 
        PR c++/49387
diff --git a/gcc/testsuite/gcc.dg/torture/pr49603.c b/gcc/testsuite/gcc.dg/torture/pr49603.c
new file mode 100644 (file)
index 0000000..90f51e5
--- /dev/null
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+
+struct gl_visual {
+    float AlphaScale;
+};
+struct gl_context {
+    struct gl_visual *Visual;
+};
+void quickdraw_rgb( struct gl_context * ctx,
+                   int width, int height)
+{
+  int i, j;
+  unsigned char alpha[1600];
+  for (j=0; j<width; j++)
+    alpha[j] = (int) ctx->Visual->AlphaScale; 
+  for (i=0; i<height; i++)
+    foo( alpha);
+}
+
index 0d7d3dbe41dc83be4cbb3aa7a41eef45b3cbfbcb..9a384c5cfa3f8d8ef4afbb8a11ddfc7bd3a288de 100644 (file)
@@ -4574,19 +4574,14 @@ vectorizable_load (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt,
              /* 4. Handle invariant-load.  */
              if (inv_p && !bb_vinfo)
                {
+                 tree vec_inv;
+                 gimple_stmt_iterator gsi2 = *gsi;
                  gcc_assert (!strided_load);
-                 if (j == 0)
-                   {
-                     tree vec_inv;
-                     gimple_stmt_iterator gsi2 = *gsi;
-                     gsi_next (&gsi2);
-                     vec_inv = build_vector_from_val (vectype, scalar_dest);
-                     new_temp = vect_init_vector (stmt, vec_inv,
-                                                  vectype, &gsi2);
-                     new_stmt = SSA_NAME_DEF_STMT (new_temp);
-                   }
-                 else
-                   gcc_unreachable (); /* FORNOW. */
+                 gsi_next (&gsi2);
+                 vec_inv = build_vector_from_val (vectype, scalar_dest);
+                 new_temp = vect_init_vector (stmt, vec_inv,
+                                              vectype, &gsi2);
+                 new_stmt = SSA_NAME_DEF_STMT (new_temp);
                }
 
              if (negative)