https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108785

            Bug ID: 108785
           Summary: nested cycle vectorization too restrictive
           Product: gcc
           Version: 13.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: rguenth at gcc dot gnu.org
  Target Milestone: ---

For the testcase in PR108782 we're rejecting to vectorize the nested cycle
because

      if (!flow_bb_inside_loop_p (loop, gimple_bb (use_stmt)))
        {
          if (dump_enabled_p ())
            dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
                             "intermediate value used outside loop.\n");

          return NULL;
        }

but really all inner PHIs should be trivially vectorizable without
further restrictions.  The only thing we need to do is detect double
reductions, that is, when there's an outer reduction feeding the inner
loop PHI.

Reply via email to