24 lines
961 B
Diff
24 lines
961 B
Diff
|
|
diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c
|
||
|
|
index 36639b697f1..88f14e73d65 100644
|
||
|
|
--- a/gcc/tree-vect-data-refs.c
|
||
|
|
+++ b/gcc/tree-vect-data-refs.c
|
||
|
|
@@ -938,6 +938,18 @@ vect_compute_data_ref_alignment (dr_vec_info *dr_info)
|
||
|
|
= exact _div (vect_calculate_target_alignment (dr_info), BITS_PER_UNIT);
|
||
|
|
DR_TARGET_ALIGNMENT (dr_info) = vector_alignment;
|
||
|
|
|
||
|
|
+ /* If the main loop has peeled for alignment we have no way of knowing
|
||
|
|
+ whether the data accesses in the epilogues are aligned. We can't at
|
||
|
|
+ compile time answer the question whether we have entered the main loop or
|
||
|
|
+ not. Fixes PR 92351. */
|
||
|
|
+ if (loop_vinfo)
|
||
|
|
+ {
|
||
|
|
+ loop_vec_info orig_loop_vinfo = LOOP_VINFO_ORIG_LOOP_INFO (loop_vinfo);
|
||
|
|
+ if (orig_loop_vinfo
|
||
|
|
+ && LOOP_VINFO_PEELING_FOR_ALIGNMENT (orig_loop_vinfo) != 0)
|
||
|
|
+ return;
|
||
|
|
+ }
|
||
|
|
+
|
||
|
|
unsigned HOST_WIDE_INT vect_align_c;
|
||
|
|
if (!vector_alignment.is_constant (&vect_align_c))
|
||
|
|
return;
|