------- Comment #5 from irar at il dot ibm dot com  2007-10-21 08:45 -------
(In reply to comment #4)
> Created an attachment (id=14370)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=14370&action=view) [edit]
> Vectorization dump file
> 
Thanks!

The vectorizer fails in transformation phase in function
vectorizable_operation:
  if (icode == CODE_FOR_nothing)
    {
      if (vect_print_dump_info (REPORT_DETAILS))
        fprintf (vect_dump, "op not supported by target.");
      if (GET_MODE_SIZE (vec_mode) != UNITS_PER_WORD
          || LOOP_VINFO_VECT_FACTOR (loop_vinfo)
             < vect_min_worthwhile_factor (code))
        return false;
      if (vect_print_dump_info (REPORT_DETAILS))
        fprintf (vect_dump, "proceeding using word mode.");
    }

During the analysis, we also get CODE_FOR_nothing, but also at that stage
LOOP_VINFO_VECT_FACTOR (loop_vinfo) > vect_min_worthwhile_factor (code)
hence we proceed using word mode.
At the end of the analysis, we change the vectorization factor (divide it by 4)
to perform pure SLP on the loop, so during the transformation phase, when we
get to the same code again, we probably get that  
LOOP_VINFO_VECT_FACTOR (loop_vinfo) < vect_min_worthwhile_factor (code)
and we fail.

The idea was that we should not fail to vectorize during the transformation,
since everything was checked during the analysis, therefore, a gcc_assert was
put here.

I'll have to think how to fix this problem.

Thanks,
Ira


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33804

Reply via email to