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

Kewen Lin <linkw at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |bergner at gcc dot gnu.org,
                   |                            |linkw at gcc dot gnu.org,
                   |                            |segher at gcc dot gnu.org,
                   |                            |wschmidt at gcc dot gnu.org

--- Comment #1 from Kewen Lin <linkw at gcc dot gnu.org> ---
Confirmed, this requires one e300c3 cross build to reproduce:

2944│         for (; instance != NULL; instance = instance->next)
2945│           {
2946│             bool mismatch = false;
2947├───────────> tree nextparm = TYPE_ARG_TYPES (instance->fntype);
2948│
2949│             for (unsigned int arg_i = 0;

(gdb) p instance->fntype
$1 = <tree 0x0>

The overloaded bif fntype for RS6000_INST_VSEEQP relies on type usi_ftype_tf.

  rs6000_instance_info[RS6000_INST_VSEEQP].fntype
    = usi_ftype_tf;

  if (float128_type_node)
    usi_ftype_tf
    = build_function_type_list (  unsigned_intSI_type_node,
                                  float128_type_node,
                                NULL_TREE)

But on e300c3 there is no float128 type support (float128_type_node is NULL).

One thought seems to check instance->fntype first and take (skip) it as
mismatch if it's NULL.

Reply via email to