libgcc, soft-float: Fix strong_alias macro use for Darwin.
authorIain Sandoe <iain@sandoe.co.uk>
Fri, 3 Sep 2021 07:41:06 +0000 (08:41 +0100)
committerIain Sandoe <iain@sandoe.co.uk>
Fri, 3 Sep 2021 15:25:40 +0000 (16:25 +0100)
commit3ccb523bdd78e6ba3c133064be90cdf19dcbf896
treec6fd642c545faa65c54c5b1205e964024b2d2000
parent01005550377ff17716e6ad57c62df726877ab79f
libgcc, soft-float: Fix strong_alias macro use for Darwin.

Darwin does not support strong symbol aliases and a work-
around is provided in sfp-machine.h where a second function
is created that simply calls the original.  However this
needs the arguments to the synthesized function to track
the mode of the original function.

So the fix here is to match known floating point modes from
the incoming function and apply the one found to the new
function args.

The matching is highly specific to the current set of modes
and will need adjusting should more cases be added.

Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>
libgcc/ChangeLog:

* config/i386/sfp-machine.h (alias_HFtype, alias_SFtype
alias_DFtype, alias_TFtype): New.
(ALIAS_SELECTOR): New.
(strong_alias): Use __typeof and a _Generic selector to
provide the type to the synthesized function.
libgcc/config/i386/sfp-machine.h