re PR tree-optimization/69186 (ICE at -O3 on x86_64-linux-gnu in vect_update_misalignment_for_peel, at tree-vect-data-refs.c:889)

2016-01-13  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/69186
	* tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
	Properly guard vect_update_misalignment_for_peel call.

	* gcc.dg/torture/pr69186.c: New testcase.

From-SVN: r232314
This commit is contained in:
Richard Biener 2016-01-13 08:26:45 +00:00 committed by Richard Biener
parent c6f72a4614
commit ccbd710399
4 changed files with 33 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2016-01-13 Richard Biener <rguenther@suse.de>
PR tree-optimization/69186
* tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
Properly guard vect_update_misalignment_for_peel call.
2016-01-12 Jeff Law <law@redhat.com>
PR tree-optimization/pr67755

View File

@ -1,3 +1,8 @@
2016-01-13 Richard Biener <rguenther@suse.de>
PR tree-optimization/69186
* gcc.dg/torture/pr69186.c: New testcase.
2016-01-13 Jeff Law <law@redhat.com>
PR tree-optimization/67755

View File

@ -0,0 +1,12 @@
/* { dg-do compile } */
static int a[10][2];
int b;
void
fn1 ()
{
b = 0;
for (; b < 6; b++)
a[b][2] ^= 1;
}

View File

@ -1826,7 +1826,16 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo)
misalignment of DR_i must be set to unknown. */
FOR_EACH_VEC_ELT (datarefs, i, dr)
if (dr != dr0)
vect_update_misalignment_for_peel (dr, dr0, npeel);
{
/* Strided accesses perform only component accesses, alignment
is irrelevant for them. */
stmt_info = vinfo_for_stmt (DR_STMT (dr));
if (STMT_VINFO_STRIDED_P (stmt_info)
&& !STMT_VINFO_GROUPED_ACCESS (stmt_info))
continue;
vect_update_misalignment_for_peel (dr, dr0, npeel);
}
LOOP_VINFO_UNALIGNED_DR (loop_vinfo) = dr0;
if (npeel)