re PR tree-optimization/33860 (ICE in vectorizable_load, at tree-vect-transform.c:5503)
PR tree-optimization/33860 * tree-vect-transform.c (vect_analyze_data_ref_access): Don't allow interleaved accesses in case the dr is inside the inner-loop during outer-loop vectorization. From-SVN: r129587
This commit is contained in:
parent
d1ed933d78
commit
68cba9eee7
|
@ -1,3 +1,10 @@
|
|||
2007-10-23 Dorit Nuzman <dorit@il.ibm.com>
|
||||
|
||||
PR tree-optimization/33860
|
||||
* tree-vect-transform.c (vect_analyze_data_ref_access): Don't allow
|
||||
interleaved accesses in case the dr is inside the inner-loop during
|
||||
outer-loop vectorization.
|
||||
|
||||
2007-10-23 Eric Botcazou <ebotcazou@libertysurf.fr>
|
||||
|
||||
* doc/rtl.texi (Flags): Fix MEM_SCALAR_P entry.
|
||||
|
|
|
@ -1,3 +1,10 @@
|
|||
2007-10-23 Martin Michlmayr <tbm@cyrius.com>
|
||||
Dorit Nuzman <dorit@il.ibm.com>
|
||||
|
||||
PR tree-optimization/33860
|
||||
* g++.dg/vect/pr33860.cc: New test.
|
||||
* g++.dg/vect/pr33860a.cc: New test.
|
||||
|
||||
2007-10-23 Tehila Meyzels <tehila@il.ibm.com>
|
||||
Revital Eres <eres@il.ibm.com>
|
||||
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
/* { dg-do compile } */
|
||||
/* Testcase by Martin Michlmayr <tbm@cyrius.com> */
|
||||
|
||||
class Matrix
|
||||
{
|
||||
public:
|
||||
double data[4][4];
|
||||
Matrix operator* (const Matrix matrix) const;
|
||||
void makeRotationAboutVector (void);
|
||||
};
|
||||
void Matrix::makeRotationAboutVector (void)
|
||||
{
|
||||
Matrix irx;
|
||||
*this = irx * (*this);
|
||||
}
|
||||
Matrix Matrix::operator* (const Matrix matrix) const
|
||||
{
|
||||
Matrix ret;
|
||||
for (int i = 0; i < 4; i++)
|
||||
for (int j = 0; j < 4; j++)
|
||||
ret.data[j][i] = matrix.data[j][2] + matrix.data[j][3];
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* { dg-final { cleanup-tree-dump "vect" } } */
|
|
@ -0,0 +1,25 @@
|
|||
/* { dg-do compile } */
|
||||
/* Testcase by Martin Michlmayr <tbm@cyrius.com> */
|
||||
|
||||
class Matrix
|
||||
{
|
||||
public:
|
||||
float data[4][4] __attribute__ ((__aligned__(16)));
|
||||
Matrix operator* (const Matrix matrix) const;
|
||||
void makeRotationAboutVector (void);
|
||||
};
|
||||
void Matrix::makeRotationAboutVector (void)
|
||||
{
|
||||
Matrix irx;
|
||||
*this = irx * (*this);
|
||||
}
|
||||
Matrix Matrix::operator* (const Matrix matrix) const
|
||||
{
|
||||
Matrix ret;
|
||||
for (int i = 0; i < 4; i++)
|
||||
for (int j = 0; j < 4; j++)
|
||||
ret.data[j][i] = matrix.data[j][2] + matrix.data[j][3];
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* { dg-final { cleanup-tree-dump "vect" } } */
|
|
@ -2322,6 +2322,10 @@ vect_analyze_data_ref_access (struct data_reference *dr)
|
|||
|
||||
if (nested_in_vect_loop_p (loop, stmt))
|
||||
{
|
||||
/* Interleaved accesses are not yet supported within outer-loop
|
||||
vectorization for references in the inner-loop. */
|
||||
DR_GROUP_FIRST_DR (vinfo_for_stmt (stmt)) = NULL_TREE;
|
||||
|
||||
/* For the rest of the analysis we use the outer-loop step. */
|
||||
step = STMT_VINFO_DR_STEP (stmt_info);
|
||||
dr_step = TREE_INT_CST_LOW (step);
|
||||
|
|
Loading…
Reference in New Issue