Re: [PATCH] modula2: Many powerpc platforms do _not_ have support for IEEE754 long double [PR111956]
Richard Biener writes: > On Thu, Jan 18, 2024 at 1:58 AM Gaius Mulley wrote: >> >> >> ok for master ? >> >> Bootstrapped on power8 (cfarm135), power9 (cfarm120) and >> x86_64-linux-gnu. > > OK. many thanks! > I wonder what this does to the libm2 ABI? ah yes - I'll open a PR reflecting lack of libm2 ABI compatibility on powerpc platforms.
Re: [PATCH] modula2: Many powerpc platforms do _not_ have support for IEEE754 long double [PR111956]
On Thu, Jan 18, 2024 at 1:58 AM Gaius Mulley wrote: > > > ok for master ? > > Bootstrapped on power8 (cfarm135), power9 (cfarm120) and > x86_64-linux-gnu. OK. I wonder what this does to the libm2 ABI? > --- > > This patch corrects commit > r14-4149-g81d5ca0b9b8431f1bd7a5ec8a2c94f04bb0cf032 which assummed > all powerpc platforms would have IEEE754 long double. The patch > ensures that cc1gm2 obtains the default IEEE754 long double availability > from the configure generated tm_defines. The user command > line switches -mabi=ibmlongdouble and -mabi=ieeelongdouble are implemented > to override the configuration defaults. > > gcc/m2/ChangeLog: > > PR modula2/111956 > * Make-lang.in (host_mc_longreal): Remove. > * configure: Regenerate. > * configure.ac (M2C_LONGREAL_FLOAT128): Remove. > (M2C_LONGREAL_PPC64LE): Remove. > * gm2-compiler/M2Options.def (SetIBMLongDouble): New procedure. > (GetIBMLongDouble): New procedure function. > (SetIEEELongDouble): New procedure. > (GetIEEELongDouble): New procedure function. > * gm2-compiler/M2Options.mod (SetIBMLongDouble): New procedure. > (GetIBMLongDouble): New procedure function. > (SetIEEELongDouble): New procedure. > (GetIEEELongDouble): New procedure function. > (InitializeLongDoubleFlags): New procedure called during > module block initialization. > * gm2-gcc/m2configure.cc: Remove duplicate includes. > (m2configure_M2CLongRealFloat128): Remove. > (m2configure_M2CLongRealIBM128): Remove. > (m2configure_M2CLongRealLongDouble): Remove. > (m2configure_M2CLongRealLongDoublePPC64LE): Remove. > (m2configure_TargetIEEEQuadDefault): New function. > * gm2-gcc/m2configure.def (M2CLongRealFloat128): Remove. > (M2CLongRealIBM128): Remove. > (M2CLongRealLongDouble): Remove. > (M2CLongRealLongDoublePPC64LE): Remove. > (TargetIEEEQuadDefault): New function. > * gm2-gcc/m2configure.h (m2configure_M2CLongRealFloat128): Remove. > (m2configure_M2CLongRealIBM128): Remove. > (m2configure_M2CLongRealLongDouble): Remove. > (m2configure_M2CLongRealLongDoublePPC64LE): Remove. > (m2configure_TargetIEEEQuadDefault): New function. > * gm2-gcc/m2options.h (M2Options_SetIBMLongDouble): New prototype. > (M2Options_GetIBMLongDouble): New prototype. > (M2Options_SetIEEELongDouble): New prototype. > (M2Options_GetIEEELongDouble): New prototype. > * gm2-gcc/m2type.cc (build_m2_long_real_node): Re-implement using > results of M2Options_GetIBMLongDouble and M2Options_GetIEEELongDouble. > * gm2-lang.cc (gm2_langhook_handle_option): Add case > OPT_mabi_ibmlongdouble and call M2Options_SetIBMLongDouble. > Add case OPT_mabi_ieeelongdouble and call M2Options_SetIEEELongDouble. > * gm2config.aci.in: Regenerate. > * gm2spec.cc (lang_specific_driver): Remove block defined by > M2C_LONGREAL_PPC64LE. > Remove case OPT_mabi_ibmlongdouble. > Remove case OPT_mabi_ieeelongdouble. > > libgm2/ChangeLog: > > PR modula2/111956 > * Makefile.am (TARGET_LONGDOUBLE_ABI): Remove. > * Makefile.in: Regenerate. > * libm2cor/Makefile.am (TARGET_LONGDOUBLE_ABI): Remove. > * libm2cor/Makefile.in: Regenerate. > * libm2iso/Makefile.am (TARGET_LONGDOUBLE_ABI): Remove. > * libm2iso/Makefile.in: Regenerate. > * libm2log/Makefile.am (TARGET_LONGDOUBLE_ABI): Remove. > * libm2log/Makefile.in: Regenerate. > * libm2min/Makefile.am (TARGET_LONGDOUBLE_ABI): Remove. > * libm2min/Makefile.in: Regenerate. > * libm2pim/Makefile.am (TARGET_LONGDOUBLE_ABI): Remove. > * libm2pim/Makefile.in: Regenerate. > > --- > > diff --git a/gcc/m2/Make-lang.in b/gcc/m2/Make-lang.in > index d7bc7362bbf..45bfa933dca 100644 > --- a/gcc/m2/Make-lang.in > +++ b/gcc/m2/Make-lang.in > @@ -98,9 +98,6 @@ GM2_PROG_DEP=gm2$(exeext) xgcc$(exeext) cc1gm2$(exeext) > > include m2/config-make > > -# Determine if float128 should represent the Modula-2 type LONGREAL. > -host_mc_longreal := $(if $(strip $(filter > powerpc64le%,$(host))),--longreal=__float128) > - > LIBSTDCXX=../$(TARGET_SUBDIR)/libstdc++-v3/src/.libs/libstdc++.a > > PGE=m2/pge$(exeext) > @@ -474,8 +471,7 @@ MC_ARGS= --olang=c++ \ > -I$(srcdir)/m2/gm2-gcc \ > --quiet \ > $(MC_COPYRIGHT) \ > - --gcc-config-system \ > - $(host_mc_longreal) > + --gcc-config-system > > MCDEPS=m2/boot-bin/mc$(exeext) > > diff --git a/gcc/m2/configure b/gcc/m2/configure > index f62f3d8729c..46530970785 100755 > --- a/gcc/m2/configure > +++ b/gcc/m2/configure > @@ -3646,24 +3646,6 @@ $as_echo "#define HAVE_OPENDIR 1" >>confdefs.h > fi > > > -case $target in #( > - powerpc64le*) : > - > -$as_echo "#define M2C_LONGREAL_FLOAT128 1" >>confdefs.h > - ;; #( > - *) : >
[PATCH] modula2: Many powerpc platforms do _not_ have support for IEEE754 long double [PR111956]
ok for master ? Bootstrapped on power8 (cfarm135), power9 (cfarm120) and x86_64-linux-gnu. --- This patch corrects commit r14-4149-g81d5ca0b9b8431f1bd7a5ec8a2c94f04bb0cf032 which assummed all powerpc platforms would have IEEE754 long double. The patch ensures that cc1gm2 obtains the default IEEE754 long double availability from the configure generated tm_defines. The user command line switches -mabi=ibmlongdouble and -mabi=ieeelongdouble are implemented to override the configuration defaults. gcc/m2/ChangeLog: PR modula2/111956 * Make-lang.in (host_mc_longreal): Remove. * configure: Regenerate. * configure.ac (M2C_LONGREAL_FLOAT128): Remove. (M2C_LONGREAL_PPC64LE): Remove. * gm2-compiler/M2Options.def (SetIBMLongDouble): New procedure. (GetIBMLongDouble): New procedure function. (SetIEEELongDouble): New procedure. (GetIEEELongDouble): New procedure function. * gm2-compiler/M2Options.mod (SetIBMLongDouble): New procedure. (GetIBMLongDouble): New procedure function. (SetIEEELongDouble): New procedure. (GetIEEELongDouble): New procedure function. (InitializeLongDoubleFlags): New procedure called during module block initialization. * gm2-gcc/m2configure.cc: Remove duplicate includes. (m2configure_M2CLongRealFloat128): Remove. (m2configure_M2CLongRealIBM128): Remove. (m2configure_M2CLongRealLongDouble): Remove. (m2configure_M2CLongRealLongDoublePPC64LE): Remove. (m2configure_TargetIEEEQuadDefault): New function. * gm2-gcc/m2configure.def (M2CLongRealFloat128): Remove. (M2CLongRealIBM128): Remove. (M2CLongRealLongDouble): Remove. (M2CLongRealLongDoublePPC64LE): Remove. (TargetIEEEQuadDefault): New function. * gm2-gcc/m2configure.h (m2configure_M2CLongRealFloat128): Remove. (m2configure_M2CLongRealIBM128): Remove. (m2configure_M2CLongRealLongDouble): Remove. (m2configure_M2CLongRealLongDoublePPC64LE): Remove. (m2configure_TargetIEEEQuadDefault): New function. * gm2-gcc/m2options.h (M2Options_SetIBMLongDouble): New prototype. (M2Options_GetIBMLongDouble): New prototype. (M2Options_SetIEEELongDouble): New prototype. (M2Options_GetIEEELongDouble): New prototype. * gm2-gcc/m2type.cc (build_m2_long_real_node): Re-implement using results of M2Options_GetIBMLongDouble and M2Options_GetIEEELongDouble. * gm2-lang.cc (gm2_langhook_handle_option): Add case OPT_mabi_ibmlongdouble and call M2Options_SetIBMLongDouble. Add case OPT_mabi_ieeelongdouble and call M2Options_SetIEEELongDouble. * gm2config.aci.in: Regenerate. * gm2spec.cc (lang_specific_driver): Remove block defined by M2C_LONGREAL_PPC64LE. Remove case OPT_mabi_ibmlongdouble. Remove case OPT_mabi_ieeelongdouble. libgm2/ChangeLog: PR modula2/111956 * Makefile.am (TARGET_LONGDOUBLE_ABI): Remove. * Makefile.in: Regenerate. * libm2cor/Makefile.am (TARGET_LONGDOUBLE_ABI): Remove. * libm2cor/Makefile.in: Regenerate. * libm2iso/Makefile.am (TARGET_LONGDOUBLE_ABI): Remove. * libm2iso/Makefile.in: Regenerate. * libm2log/Makefile.am (TARGET_LONGDOUBLE_ABI): Remove. * libm2log/Makefile.in: Regenerate. * libm2min/Makefile.am (TARGET_LONGDOUBLE_ABI): Remove. * libm2min/Makefile.in: Regenerate. * libm2pim/Makefile.am (TARGET_LONGDOUBLE_ABI): Remove. * libm2pim/Makefile.in: Regenerate. --- diff --git a/gcc/m2/Make-lang.in b/gcc/m2/Make-lang.in index d7bc7362bbf..45bfa933dca 100644 --- a/gcc/m2/Make-lang.in +++ b/gcc/m2/Make-lang.in @@ -98,9 +98,6 @@ GM2_PROG_DEP=gm2$(exeext) xgcc$(exeext) cc1gm2$(exeext) include m2/config-make -# Determine if float128 should represent the Modula-2 type LONGREAL. -host_mc_longreal := $(if $(strip $(filter powerpc64le%,$(host))),--longreal=__float128) - LIBSTDCXX=../$(TARGET_SUBDIR)/libstdc++-v3/src/.libs/libstdc++.a PGE=m2/pge$(exeext) @@ -474,8 +471,7 @@ MC_ARGS= --olang=c++ \ -I$(srcdir)/m2/gm2-gcc \ --quiet \ $(MC_COPYRIGHT) \ - --gcc-config-system \ - $(host_mc_longreal) + --gcc-config-system MCDEPS=m2/boot-bin/mc$(exeext) diff --git a/gcc/m2/configure b/gcc/m2/configure index f62f3d8729c..46530970785 100755 --- a/gcc/m2/configure +++ b/gcc/m2/configure @@ -3646,24 +3646,6 @@ $as_echo "#define HAVE_OPENDIR 1" >>confdefs.h fi -case $target in #( - powerpc64le*) : - -$as_echo "#define M2C_LONGREAL_FLOAT128 1" >>confdefs.h - ;; #( - *) : - ;; -esac - -case $target in #( - powerpc64le*) : - -$as_echo "#define M2C_LONGREAL_PPC64LE 1" >>confdefs.h - ;; #( - *) : - ;; -esac - ac_config_headers="$ac_config_headers gm2config.aci" cat >confcache <<\_ACEOF diff --git a/gcc/m2/configure.ac b/gcc/m2/configure.ac index efcca628068..15be50936f7