From 0c91037894987356abfee77dfe49cd075b7126c2 Mon Sep 17 00:00:00 2001 From: Michael Matz Date: Wed, 9 May 2012 16:08:26 +0000 Subject: 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 --- gcc/tree-vect-data-refs.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'gcc/tree-vect-data-refs.c') diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c index 7464034..715e3ff 100644 --- a/gcc/tree-vect-data-refs.c +++ b/gcc/tree-vect-data-refs.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; -- cgit v1.1