return first_loop_vinfo;
/* Now analyze first_loop_vinfo for epilogue vectorization. */
- poly_uint64 lowest_th = LOOP_VINFO_VERSIONING_THRESHOLD (first_loop_vinfo);
/* For epilogues start the analysis from the first mode. The motivation
behind starting from the beginning comes from cases where the VECTOR_MODES
}
/* For now only allow one epilogue loop. */
if (first_loop_vinfo->epilogue_vinfos.is_empty ())
- {
- first_loop_vinfo->epilogue_vinfos.safe_push (loop_vinfo);
- poly_uint64 th = LOOP_VINFO_VERSIONING_THRESHOLD (loop_vinfo);
- gcc_assert (!LOOP_REQUIRES_VERSIONING (loop_vinfo)
- || maybe_ne (lowest_th, 0U));
- /* Keep track of the known smallest versioning
- threshold. */
- if (ordered_p (lowest_th, th))
- lowest_th = ordered_min (lowest_th, th);
- }
+ first_loop_vinfo->epilogue_vinfos.safe_push (loop_vinfo);
else
{
delete loop_vinfo;
if (!first_loop_vinfo->epilogue_vinfos.is_empty ())
{
+ poly_uint64 lowest_th
+ = LOOP_VINFO_VERSIONING_THRESHOLD (first_loop_vinfo);
+ for (auto epilog_vinfo : first_loop_vinfo->epilogue_vinfos)
+ {
+ poly_uint64 th = LOOP_VINFO_VERSIONING_THRESHOLD (epilog_vinfo);
+ gcc_assert (!LOOP_REQUIRES_VERSIONING (epilog_vinfo)
+ || maybe_ne (lowest_th, 0U));
+ /* Keep track of the known smallest versioning threshold. */
+ if (ordered_p (lowest_th, th))
+ lowest_th = ordered_min (lowest_th, th);
+ }
LOOP_VINFO_VERSIONING_THRESHOLD (first_loop_vinfo) = lowest_th;
if (dump_enabled_p ())
dump_printf_loc (MSG_NOTE, vect_location,