re PR tree-optimization/68445 (ICE: internal compiler error: in operator[], at vec.h)
2015-11-23 Richard Biener <rguenther@suse.de> PR tree-optimization/68445 * tree-vect-slp.c (vect_create_mask_and_perm): Properly use two different strides. * gcc.dg/vect/pr68445.c: New testcase. From-SVN: r230737
This commit is contained in:
parent
e63d44c2a9
commit
7706cb01c0
4 changed files with 37 additions and 5 deletions
|
@ -1,3 +1,9 @@
|
|||
2015-11-23 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/68445
|
||||
* tree-vect-slp.c (vect_create_mask_and_perm): Properly use
|
||||
two different strides.
|
||||
|
||||
2015-11-23 Robin Dapp <rdapp@linux.vnet.ibm.com>
|
||||
|
||||
* config/s390/s390.h: Add new symref flags, _NOTALIGN2 etc.
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2015-11-23 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/68445
|
||||
* gcc.dg/vect/pr68445.c: New testcase.
|
||||
|
||||
2015-11-23 Robin Dapp <rdapp@linux.vnet.ibm.com>
|
||||
|
||||
* gcc.target/s390/load-relative-check.c: New test to check
|
||||
|
|
19
gcc/testsuite/gcc.dg/vect/pr68445.c
Normal file
19
gcc/testsuite/gcc.dg/vect/pr68445.c
Normal file
|
@ -0,0 +1,19 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-require-effective-target vect_int } */
|
||||
|
||||
void IMB_double_fast_x (int *destf, int *dest, int y, int *p1f)
|
||||
{
|
||||
int i;
|
||||
for (i = y; i > 0; i--)
|
||||
{
|
||||
*dest++ = 0;
|
||||
destf[0] = destf[4] = p1f[0];
|
||||
destf[1] = destf[5] = p1f[1];
|
||||
destf[2] = destf[6] = p1f[2];
|
||||
destf[3] = destf[7] = p1f[3];
|
||||
destf += 8;
|
||||
p1f += 4;
|
||||
}
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump "vectorizing stmts using SLP" "vect" } } */
|
|
@ -3177,10 +3177,11 @@ vect_create_mask_and_perm (gimple *stmt,
|
|||
{
|
||||
tree perm_dest;
|
||||
gimple *perm_stmt = NULL;
|
||||
int i, stride;
|
||||
int i, stride_in, stride_out;
|
||||
tree first_vec, second_vec, data_ref;
|
||||
|
||||
stride = SLP_TREE_NUMBER_OF_VEC_STMTS (node) / ncopies;
|
||||
stride_out = SLP_TREE_NUMBER_OF_VEC_STMTS (node) / ncopies;
|
||||
stride_in = dr_chain.length () / ncopies;
|
||||
|
||||
/* Initialize the vect stmts of NODE to properly insert the generated
|
||||
stmts later. */
|
||||
|
@ -3202,10 +3203,11 @@ vect_create_mask_and_perm (gimple *stmt,
|
|||
vect_finish_stmt_generation (stmt, perm_stmt, gsi);
|
||||
|
||||
/* Store the vector statement in NODE. */
|
||||
SLP_TREE_VEC_STMTS (node)[stride * i + vect_stmts_counter] = perm_stmt;
|
||||
SLP_TREE_VEC_STMTS (node)[stride_out * i + vect_stmts_counter]
|
||||
= perm_stmt;
|
||||
|
||||
first_vec_indx += stride;
|
||||
second_vec_indx += stride;
|
||||
first_vec_indx += stride_in;
|
||||
second_vec_indx += stride_in;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue