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

--- Comment #3 from Martin Sebor <msebor at gcc dot gnu.org> ---
One of the reasons why big vectors don't work seems to be the assumption in
TYPE_VECTOR_SUBPARTS() that they can't be bigger than 2^31.  But fixing this
function alone doesn't seem to be sufficient.

inline poly_uint64
TYPE_VECTOR_SUBPARTS (const_tree node)
{
  STATIC_ASSERT (NUM_POLY_INT_COEFFS <= 2);
  unsigned int precision = VECTOR_TYPE_CHECK (node)->type_common.precision;
  if (NUM_POLY_INT_COEFFS == 2)
    {
      poly_uint64 res = 0;
      res.coeffs[0] = 1 << (precision & 0xff);
      if (precision & 0x100)
        res.coeffs[1] = 1 << (precision & 0xff);
      return res;
    }
  else
    return 1 << precision;
}

Reply via email to