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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |ice-on-valid-code
                 CC|                            |rguenth at gcc dot gnu.org
   Target Milestone|---                         |13.0

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
  for (i = 0; i < MAX_INTERM_CVT_STEPS; i++)
    {
      intermediate_mode = insn_data[icode1].operand[0].mode;
      if (VECTOR_BOOLEAN_TYPE_P (prev_type))
        intermediate_type
          = vect_halve_mask_nunits (prev_type, intermediate_mode);
      else
        intermediate_type
          = lang_hooks.types.type_for_mode (intermediate_mode,
                                            TYPE_UNSIGNED (prev_type));

      if (VECTOR_BOOLEAN_TYPE_P (intermediate_type)

that fails to check for the case the langhook returns NULL.  In fact,
using build_nonstandard_integer_type is prefered, just use
GET_MODE_PRECISION on the intermediate_mode.

Note that's just guessed from the backtrace reported.  If you can fire up
gdb and see what it actually segfaults on that would be helpful.  Likewise
the above would suggest your type_for_mode needs amemdment.

Reply via email to