+2018-09-20 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR tree-optimization/86877
+ * tree-vect-loop.c (vect_analyze_loop_2): Call
+ vect_verify_datarefs_alignment.
+
2018-09-19 Marek Polacek <polacek@redhat.com>
* doc/invoke.texi: Document -Wclass-conversion.
+2018-09-20 Richard Sandiford <richard.sandiford@arm.com>
+
+ PR tree-optimization/86877
+ * gfortran.dg/vect/vect-8-epilogue.F90: New test.
+
2018-09-19 Marek Polacek <polacek@redhat.com>
* g++.dg/conversion/op4.C: Add dg-warning.
--- /dev/null
+! { dg-do compile }
+! { dg-require-effective-target vect_double }
+! { dg-additional-options "-finline-matmul-limit=0 --param vect-epilogues-nomask=1" }
+! { dg-additional-options "-mstrict-align" { target { aarch64*-*-* } } }
+
+#include "vect-8.f90"
if (!ok)
return false;
- /* Do not invoke vect_enhance_data_refs_alignment for eplilogue
- vectorization. */
+ /* Do not invoke vect_enhance_data_refs_alignment for epilogue
+ vectorization, since we do not want to add extra peeling or
+ add versioning for alignment. */
if (!LOOP_VINFO_EPILOGUE_P (loop_vinfo))
- {
/* This pass will decide on using loop versioning and/or loop peeling in
order to enhance the alignment of data references in the loop. */
ok = vect_enhance_data_refs_alignment (loop_vinfo);
- if (!ok)
- {
- if (dump_enabled_p ())
- dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
- "bad data alignment.\n");
- return false;
- }
+ else
+ ok = vect_verify_datarefs_alignment (loop_vinfo);
+ if (!ok)
+ {
+ if (dump_enabled_p ())
+ dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
+ "bad data alignment.\n");
+ return false;
}
if (slp)