[Bug tree-optimization/104112] [12 Regression] ICE with -Ofast -march=armv8.2-a+sve -msve-vector-bits=512 since r12-2292-g1dd3f21095858fbfd3e28a149578d5fb67e75f95

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Jan 19 11:13:55 GMT 2022


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

--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
So the issue is we hit

vect_create_partial_epilog (tree vec_def, tree vectype, code_helper code,
                            gimple_seq *seq)
{
  unsigned nunits = TYPE_VECTOR_SUBPARTS (TREE_TYPE (vec_def)).to_constant ();
  unsigned nunits1 = TYPE_VECTOR_SUBPARTS (vectype).to_constant ();
  tree stype = TREE_TYPE (vectype);
  tree new_temp = vec_def;
  while (nunits > nunits1)
    {
      nunits /= 2;
      tree vectype1 = get_related_vectype_for_scalar_type (TYPE_MODE (vectype),
                                                           stype, nunits);
      unsigned int bitsize = tree_to_uhwi (TYPE_SIZE (vectype1));

with

(gdb) p debug_generic_expr (vectype)
vector(2) double
$3 = void
(gdb) p debug_generic_expr (vec_def->typed.type)
vector(8) double

but when looking for a nunits == 4 vectype we end up with no valid vector type.
returned from get_related_vectype_for_scalar_type.

The code that checks whether we can vectorize doesn't verify that such
modes exist, that would need to be added.  But maybe the above isn't
exactly the correct way to get at it?  Do the command-line options
really disable V4DFmode support?


More information about the Gcc-bugs mailing list