https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78938
--- Comment #5 from rguenther at suse dot de <rguenther at suse dot de> --- On Wed, 4 Jan 2017, jakub at gcc dot gnu.org wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78938 > > --- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> --- > (In reply to rguent...@suse.de from comment #3) > > I believe the bool patterns were supposed to handle this case but > > at the time I fixed its time/size complexity issues we IIRC ended up > > effectively disabling them for x86 with no fallout -- this may be > > the fallout. So I'd figure out why the bool patterns stuff does not > > trigger here first. IIRC the "effective disabling" was due to > > some target optab/hook check that always returns true on x86 > > (and thus possibly needs to be changed to check for a bad "mix" of > > VECTOR_BOOLEAN kinds) > > The bool patterns generally do something different, attempt to translate bool > operations into integral operations of some reasonable size. That is not what > is needed here. Anyway, before we talk about vect patterns, the first > question > is if vectorizable_condition should handle this by itself (increase its > complexity), or fail. If the latter, then after it fails there is another > question if we want to do something about it in tree-vect-patterns.c or not. Yes, the vectorizer should handle it (and I always prefer handling things in vectorizable_* rather than adding complexity to patterns).