diff options
author | Richard Guenther <rguenther@suse.de> | 2011-07-01 06:56:18 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2011-07-01 06:56:18 +0000 |
commit | ab70d825c6eda82882708757b89f80b8f2f1d2f6 (patch) | |
tree | a869fea6b0c9c455ef294799ca412c88df3bfb34 /gcc | |
parent | 59198f271e3e631f90a201e87d9e1c6bafe34536 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/pr49603.c | 19 | ||||
-rw-r--r-- | gcc/tree-vect-stmts.c | 19 |
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) |