Hi,
On 25.01.22 12:44, Jakub Jelinek via Fortran wrote:
Apparently something we (at least I) have totally missed, we clearly have a
problem with the IEEE modules for the dual -mabi={ibm,ieee}longdouble.
We have:
__ieee_arithmetic_MOD_ieee_class_16;
__ieee_arithmetic_MOD_ieee_support_datatype_16;
... exported from the library, but no corresponding _17 entrypoints.
Can everything these modules do be resolved at compile time inline
such that for the abi_kind 17 nothing is really called, or
any other thoughts on this?
We already have in gfc_conv_function_expr:
/* The IEEE_ARITHMETIC functions are caught here. */
if (sym->from_intmod == INTMOD_IEEE_ARITHMETIC)
if (gfc_conv_ieee_arithmetic_function (se, expr))
return;
which handles:
if (startswith (name, "_gfortran_ieee_is_nan"))
else if (startswith (name, "_gfortran_ieee_is_finite"))
else if (startswith (name, "_gfortran_ieee_unordered"))
else if (startswith (name, "_gfortran_ieee_is_normal"))
else if (startswith (name, "_gfortran_ieee_is_negative"))
else if (startswith (name, "_gfortran_ieee_copy_sign"))
else if (startswith (name, "_gfortran_ieee_scalb"))
else if (startswith (name, "_gfortran_ieee_next_after"))
else if (startswith (name, "_gfortran_ieee_rem"))
else if (startswith (name, "_gfortran_ieee_logb"))
else if (startswith (name, "_gfortran_ieee_rint"))
else -> 'return false;' -> library call.
Thus, more functions could be handled in the compiler itself.
(Likewise for INTMOD_IEEE_EXCEPTIONS, not that I know whether
that has any relevant functions.)
Alternatively, kind= tweaking could be done here as well.
Tobias
-----------------
Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634
München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas
Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht
München, HRB 106955