aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2011-07-01 06:56:18 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2011-07-01 06:56:18 +0000
commitab70d825c6eda82882708757b89f80b8f2f1d2f6 (patch)
treea869fea6b0c9c455ef294799ca412c88df3bfb34 /gcc
parent59198f271e3e631f90a201e87d9e1c6bafe34536 (diff)
downloadgcc-ab70d825c6eda82882708757b89f80b8f2f1d2f6.zip
gcc-ab70d825c6eda82882708757b89f80b8f2f1d2f6.tar.gz
gcc-ab70d825c6eda82882708757b89f80b8f2f1d2f6.tar.bz2
re PR middle-end/49603 (177.mesa in SPEC CPU 2000 failed to build)
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr49603.c19
-rw-r--r--gcc/tree-vect-stmts.c19
4 files changed, 37 insertions, 12 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8fc1cd5..6c4a488 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 7715ae0..17046d6 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
index 0000000..90f51e5
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr49603.c
@@ -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);
+}
+
diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c
index 0d7d3db..9a384c5 100644
--- a/gcc/tree-vect-stmts.c
+++ b/gcc/tree-vect-stmts.c
@@ -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)