re PR tree-optimization/42709 (error: type mismatch in pointer plus expression)

PR tree-optimization/42709
	* tree-vect-slp.c (vect_get_constant_vectors): Use constant's type
	as scalar type in creation of constant vector operand.

From-SVN: r155882
This commit is contained in:
Ira Rosen 2010-01-14 07:49:39 +00:00 committed by Ira Rosen
parent a7bf45dee5
commit cd481d83ed
4 changed files with 44 additions and 10 deletions

View File

@ -1,3 +1,9 @@
2010-01-14 Ira Rosen <irar@il.ibm.com>
PR tree-optimization/42709
* tree-vect-slp.c (vect_get_constant_vectors): Use constant's type
as scalar type in creation of constant vector operand.
2010-01-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
PR testsuite/42414

View File

@ -1,3 +1,8 @@
2010-01-14 Ira Rosen <irar@il.ibm.com>
PR tree-optimization/42709
* gcc.dg/vect/pr42709.c: New test.
2010-01-14 Paul Thomas <pault@gcc.gnu.org>
PR fortran/41478

View File

@ -0,0 +1,28 @@
/* { dg-do compile } */
/* { dg-require-effective-target vect_int } */
#include <stdarg.h>
#include "tree-vect.h"
#define N 128
int *res[N];
int
main1 (int *a, int *b, int *c, int *d, int dummy)
{
int i;
for (i = 0; i < N/2; i+=4)
{
res[i] = a + 16;
res[i+1] = b + 16;
res[i+2] = c + 16;
res[i+3] = d + 16;
if (dummy == 32)
abort ();
}
}
/* { dg-final { cleanup-tree-dump "vect" } } */

View File

@ -1421,7 +1421,6 @@ vect_get_constant_vectors (slp_tree slp_node, VEC(tree,heap) **vec_oprnds,
VEC (gimple, heap) *stmts = SLP_TREE_SCALAR_STMTS (slp_node);
gimple stmt = VEC_index (gimple, stmts, 0);
stmt_vec_info stmt_vinfo = vinfo_for_stmt (stmt);
tree vectype = STMT_VINFO_VECTYPE (stmt_vinfo);
int nunits;
tree vec_cst;
tree t = NULL_TREE;
@ -1446,16 +1445,12 @@ vect_get_constant_vectors (slp_tree slp_node, VEC(tree,heap) **vec_oprnds,
}
if (CONSTANT_CLASS_P (op))
{
vector_type = vectype;
constant_p = true;
}
constant_p = true;
else
{
vector_type = get_vectype_for_scalar_type (TREE_TYPE (op));
gcc_assert (vector_type);
constant_p = false;
}
constant_p = false;
vector_type = get_vectype_for_scalar_type (TREE_TYPE (op));
gcc_assert (vector_type);
nunits = TYPE_VECTOR_SUBPARTS (vector_type);