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

--- Comment #5 from Aldy Hernandez <aldyh at gcc dot gnu.org> ---
simple_type_specificer() is dereferencing a NULL result from
c_common_type_for_mode and segfaulting:

          int prec = TYPE_PRECISION (t);
          if (ALL_FIXED_POINT_MODE_P (TYPE_MODE (t)))
            t = c_common_type_for_mode (TYPE_MODE (t), TYPE_SATURATING (t));
          else
            t = c_common_type_for_mode (TYPE_MODE (t), TYPE_UNSIGNED (t));
          if (TYPE_NAME (t))

The type in question is:

<real_type 0x7fffefdeb150 HF
    size <integer_cst 0x7fffefd002a0 type <integer_type 0x7fffefcf0150
bitsizetype> constant 16>
    unit size <integer_cst 0x7fffefd002b8 type <integer_type 0x7fffefcf00a8
sizetype> constant 2>
    align 16 symtab 0 alias set -1 canonical type 0x7fffefdeb150 precision 16
    pointer_to_this <pointer_type 0x7fffefeab7e0>>

which corresponds to HFmode, which AFAICT does not have a type by design.

The attached patch fixes the problem.

Reply via email to