Patchwork Fix PR49603

login
register
mail settings
Submitter Richard Guenther
Date July 1, 2011, 6:55 a.m.
Message ID <alpine.LNX.2.00.1107010854580.810@zhemvz.fhfr.qr>
Download mbox | patch
Permalink /patch/102873/
State New
Headers show

Comments

Richard Guenther - July 1, 2011, 6:55 a.m.
This fixes PR49603.

Bootstrapped and tested on x86_64-unknown-linux-gnu, applied to trunk.

Richard.

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.

Patch

Index: gcc/tree-vect-stmts.c
===================================================================
--- gcc/tree-vect-stmts.c	(revision 175709)
+++ gcc/tree-vect-stmts.c	(working copy)
@@ -4574,19 +4574,14 @@  vectorizable_load (gimple stmt, gimple_s
 	      /* 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)
Index: gcc/testsuite/gcc.dg/torture/pr49603.c
===================================================================
--- gcc/testsuite/gcc.dg/torture/pr49603.c	(revision 0)
+++ gcc/testsuite/gcc.dg/torture/pr49603.c	(revision 0)
@@ -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);
+}
+