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

--- Comment #40 from Kewen Lin <linkw at gcc dot gnu.org> ---
> >diff --git a/gcc/internal-fn.cc b/gcc/internal-fn.cc
> >index d666ccccf67..7d8b4ac2200 100644
> >--- a/gcc/internal-fn.cc
> >+++ b/gcc/internal-fn.cc
> >@@ -3750,7 +3750,12 @@ static bool
> > direct_optab_supported_p (direct_optab optab, tree_pair types,
> >                       optimization_type opt_type)
> > {
> >-  machine_mode mode = TYPE_MODE (types.first);
> >+  tree type = types.first;
> >+  machine_mode mode = TYPE_MODE (type);
> >+  /* Scalar mode optab can't work for vector type, return false if
> >+     the given type is vector type but the mode isn't vector mode.  */
> >+  if (VECTOR_TYPE_P (type) != VECTOR_MODE_P (mode))
> >+    return false;
> 
> There are a few which scalar mode and vector types can differ and still
> work: IOR, XOR, and AND. I wonder if those should be special cased here or
> somewhere else.

Good point! This is overkill then. Not sure if there is this kind of routine to
special case them.

Reply via email to