re PR tree-optimization/53185 (segmentation fault in vectorizable_load)
PR tree-optimization/53185 * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Disable peeling when we see strided loads. testsuite/ * gcc.dg/vect/pr53185.c: New test. From-SVN: r187340
This commit is contained in:
parent
b0cd199e8d
commit
0c91037894
4 changed files with 38 additions and 0 deletions
|
@ -1,3 +1,9 @@
|
|||
2012-05-09 Michael Matz <matz@suse.de>
|
||||
|
||||
PR tree-optimization/53185
|
||||
* tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Disable
|
||||
peeling when we see strided loads.
|
||||
|
||||
2012-05-09 Matthias Klose <doko@ubuntu.com>
|
||||
|
||||
* gcc-ar.c (main): Don't check for execute bits for the plugin.
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2012-05-09 Michael Matz <matz@suse.de>
|
||||
|
||||
PR tree-optimization/53185
|
||||
* gcc.dg/vect/pr53185.c: New test.
|
||||
|
||||
2012-05-09 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR middle-end/53249
|
||||
|
|
16
gcc/testsuite/gcc.dg/vect/pr53185.c
Normal file
16
gcc/testsuite/gcc.dg/vect/pr53185.c
Normal file
|
@ -0,0 +1,16 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O3 -ftree-vectorize" } */
|
||||
unsigned short a, e;
|
||||
int *b, *d;
|
||||
int c;
|
||||
extern int fn2();
|
||||
void fn1 () {
|
||||
void *f;
|
||||
for (;;) {
|
||||
fn2 ();
|
||||
b = f;
|
||||
e = 0;
|
||||
for (; e < a; ++e)
|
||||
b[e] = d[e * c];
|
||||
}
|
||||
}
|
|
@ -1507,6 +1507,17 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo)
|
|||
&& GROUP_FIRST_ELEMENT (stmt_info) != stmt)
|
||||
continue;
|
||||
|
||||
/* FORNOW: Any strided load prevents peeling. The induction
|
||||
variable analysis will fail when the prologue loop is generated,
|
||||
and so we can't generate the new base for the pointer. */
|
||||
if (STMT_VINFO_STRIDE_LOAD_P (stmt_info))
|
||||
{
|
||||
if (vect_print_dump_info (REPORT_DETAILS))
|
||||
fprintf (vect_dump, "strided load prevents peeling");
|
||||
do_peeling = false;
|
||||
break;
|
||||
}
|
||||
|
||||
/* For invariant accesses there is nothing to enhance. */
|
||||
if (integer_zerop (DR_STEP (dr)))
|
||||
continue;
|
||||
|
|
Loading…
Add table
Reference in a new issue