On Thu, 2 Sep 2021, Iain Sandoe via Gcc-patches wrote:

> diff --git a/libgcc/soft-fp/eqdf2.c b/libgcc/soft-fp/eqdf2.c
> index 2a44ee377ce..a3bb664f5f1 100644
> --- a/libgcc/soft-fp/eqdf2.c
> +++ b/libgcc/soft-fp/eqdf2.c
> @@ -28,6 +28,7 @@
>     License along with the GNU C Library; if not, see
>     <http://www.gnu.org/licenses/>.  */
>  
> +#define DarwinMode DF
>  #include "soft-fp.h"
>  #include "double.h"

All these files are supposed to be taken unmodified from glibc.  They 
shouldn't contain any OS-specific code, such as a define of DarwinMode.  
sfp-machine.h, however, is libgcc-local, hence putting the definition of 
strong_alias there.

So you need some other way to extract the argument type of name in order 
to use it in a declaration of aliasname.  E.g.

__typeof (_Generic (name,
                    CMPtype (*) (HFtype, HFtype): (HFtype) 0,
                    CMPtype (*) (SFtype, SFtype): (SFtype) 0,
                    CMPtype (*) (DFtype, DFtype): (DFtype) 0,
                    CMPtype (*) (TFtype, TFtype): (TFtype) 0))

Now in fact I think the include ordering means none of the *type macros 
are defined here.  But if you do e.g.

typedef float alias_SFtype __attribute__ ((mode (SF)));

and similar, you could use alias_SFtype in the above.  And so keep the 
changes to the Darwin-specific parts of the libgcc-local sfp-machine.h.

-- 
Joseph S. Myers
jos...@codesourcery.com

Reply via email to