re PR middle-end/30442 (Expanded array initialization can use memset builtin function)
2012-06-05 Richard Guenther <rguenther@suse.de> PR tree-optimization/30442 * tree-vect-data-refs.c (vect_analyze_data_refs): For basic-block vectorization stop analysis at the first stmt we cannot compute a data-reference for instead of giving up completely. * gcc.dg/vect/bb-slp-30.c: New testcase. From-SVN: r188235
This commit is contained in:
parent
7ad672e46e
commit
1aedeafec2
|
@ -1,3 +1,10 @@
|
|||
2012-06-05 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/30442
|
||||
* tree-vect-data-refs.c (vect_analyze_data_refs): For basic-block
|
||||
vectorization stop analysis at the first stmt we cannot compute
|
||||
a data-reference for instead of giving up completely.
|
||||
|
||||
2012-06-05 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
* tree-loop-distribution.c (struct partition_s): Add has_writes
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2012-06-05 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/30442
|
||||
* gcc.dg/vect/bb-slp-30.c: New testcase.
|
||||
|
||||
2012-06-05 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/53081
|
||||
|
|
|
@ -0,0 +1,47 @@
|
|||
/* { dg-require-effective-target vect_int } */
|
||||
|
||||
int a[32];
|
||||
|
||||
void __attribute__((noinline))
|
||||
test1(void)
|
||||
{
|
||||
a[0] = 1;
|
||||
a[1] = 1;
|
||||
a[2] = 1;
|
||||
a[3] = 1;
|
||||
a[4] = 1;
|
||||
a[5] = 1;
|
||||
a[6] = 1;
|
||||
a[7] = 1;
|
||||
a[8] = 1;
|
||||
a[9] = 1;
|
||||
a[10] = 1;
|
||||
a[11] = 1;
|
||||
a[12] = 1;
|
||||
a[13] = 1;
|
||||
a[14] = 1;
|
||||
a[15] = 1;
|
||||
a[16] = 1;
|
||||
a[17] = 1;
|
||||
a[18] = 1;
|
||||
a[19] = 1;
|
||||
a[20] = 1;
|
||||
a[21] = 1;
|
||||
a[22] = 1;
|
||||
a[23] = 1;
|
||||
a[24] = 1;
|
||||
a[25] = 1;
|
||||
a[26] = 1;
|
||||
a[27] = 1;
|
||||
a[28] = 1;
|
||||
a[29] = 1;
|
||||
a[30] = 1;
|
||||
a[31] = 1;
|
||||
asm ("" : : : "memory");
|
||||
a[21] = 0;
|
||||
}
|
||||
|
||||
int main() { test1(); return a[21]; }
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "basic block vectorized using SLP" 1 "slp" } } */
|
||||
/* { dg-final { cleanup-tree-dump "slp" } } */
|
|
@ -2844,11 +2844,23 @@ vect_analyze_data_refs (loop_vec_info loop_vinfo,
|
|||
}
|
||||
else
|
||||
{
|
||||
gimple_stmt_iterator gsi;
|
||||
|
||||
bb = BB_VINFO_BB (bb_vinfo);
|
||||
res = compute_data_dependences_for_bb (bb, true,
|
||||
&BB_VINFO_DATAREFS (bb_vinfo),
|
||||
&BB_VINFO_DDRS (bb_vinfo));
|
||||
if (!res)
|
||||
for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
|
||||
{
|
||||
gimple stmt = gsi_stmt (gsi);
|
||||
if (!find_data_references_in_stmt (NULL, stmt,
|
||||
&BB_VINFO_DATAREFS (bb_vinfo)))
|
||||
{
|
||||
/* Mark the rest of the basic-block as unvectorizable. */
|
||||
for (; !gsi_end_p (gsi); gsi_next (&gsi))
|
||||
STMT_VINFO_VECTORIZABLE (vinfo_for_stmt (stmt)) = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!compute_all_dependences (BB_VINFO_DATAREFS (bb_vinfo),
|
||||
&BB_VINFO_DDRS (bb_vinfo), NULL, true))
|
||||
{
|
||||
if (vect_print_dump_info (REPORT_UNVECTORIZED_LOCATIONS))
|
||||
fprintf (vect_dump, "not vectorized: basic block contains function"
|
||||
|
|
Loading…
Reference in New Issue