https://gcc.gnu.org/g:0e66a6400cf99e965e679362eac65483f938b138
commit 0e66a6400cf99e965e679362eac65483f938b138 Author: Michael Meissner <meiss...@linux.ibm.com> Date: Tue Jun 18 14:27:18 2024 -0400 Revert changes Diff: --- libgfortran/configure | 7 +--- libgfortran/configure.ac | 3 -- libgfortran/kinds-override.h | 2 +- libgfortran/libgfortran.h | 2 +- libstdc++-v3/configure | 68 +++++++++---------------------- libstdc++-v3/configure.ac | 58 ++++++++++---------------- libstdc++-v3/include/ext/numeric_traits.h | 2 +- 7 files changed, 46 insertions(+), 96 deletions(-) diff --git a/libgfortran/configure b/libgfortran/configure index 2708e5c7eca4..11a1bc5f0708 100755 --- a/libgfortran/configure +++ b/libgfortran/configure @@ -5981,9 +5981,6 @@ if test "x$GCC" = "xyes"; then #if __SIZEOF_LONG_DOUBLE__ != 16 #error long double is double #endif - #if !defined(__VSX__) - #error VSX is not available - #endif int main () { @@ -12850,7 +12847,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 12853 "configure" +#line 12850 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -12956,7 +12953,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 12959 "configure" +#line 12956 "configure" #include "confdefs.h" #if HAVE_DLFCN_H diff --git a/libgfortran/configure.ac b/libgfortran/configure.ac index cfaeb9717ab8..cca1ea0ea970 100644 --- a/libgfortran/configure.ac +++ b/libgfortran/configure.ac @@ -148,9 +148,6 @@ if test "x$GCC" = "xyes"; then AC_PREPROC_IFELSE( [AC_LANG_PROGRAM([[#if __SIZEOF_LONG_DOUBLE__ != 16 #error long double is double - #endif - #if !defined(__VSX__) - #error VSX is not available #endif]], [[(void) 0;]])], [AM_FCFLAGS="$AM_FCFLAGS -mabi=ibmlongdouble -mno-gnu-attribute"; diff --git a/libgfortran/kinds-override.h b/libgfortran/kinds-override.h index 51f440e53232..f6b4956c5caa 100644 --- a/libgfortran/kinds-override.h +++ b/libgfortran/kinds-override.h @@ -30,7 +30,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see #endif /* Keep these conditions on one line so grep can filter it out. */ -#if defined(__powerpc64__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ && __SIZEOF_LONG_DOUBLE__ == 16 && defined(__VSX__) +#if defined(__powerpc64__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ && __SIZEOF_LONG_DOUBLE__ == 16 typedef _Float128 GFC_REAL_17; typedef _Complex _Float128 GFC_COMPLEX_17; #define HAVE_GFC_REAL_17 diff --git a/libgfortran/libgfortran.h b/libgfortran/libgfortran.h index 236603352435..5c59ec26e16c 100644 --- a/libgfortran/libgfortran.h +++ b/libgfortran/libgfortran.h @@ -104,7 +104,7 @@ typedef off_t gfc_offset; #endif #if defined(__powerpc64__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ \ - && defined __GLIBC_PREREQ && defined(__VSX__) + && defined __GLIBC_PREREQ #if __GLIBC_PREREQ (2, 32) #define POWER_IEEE128 1 #endif diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure index 706dcbefe11a..5645e991af7a 100755 --- a/libstdc++-v3/configure +++ b/libstdc++-v3/configure @@ -51355,31 +51355,8 @@ $as_echo "#define _GLIBCXX_LONG_DOUBLE_COMPAT 1" >>confdefs.h case "$target" in powerpc*-*-linux*) LONG_DOUBLE_COMPAT_FLAGS="$LONG_DOUBLE_COMPAT_FLAGS -mno-gnu-attribute" - # Eliminate little endian systems without VSX - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ && !defined(__VSX__) - #error "IEEE 128-bit cannot be supported on non-VSX little endian systems" - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_ieee128_possible=yes -else - ac_ieee128_possible=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - if test $ac_ieee128_possible = yes; then - # Check for IEEE128 support in libm: - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __frexpieee128 in -lm" >&5 + # Check for IEEE128 support in libm: + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __frexpieee128 in -lm" >&5 $as_echo_n "checking for __frexpieee128 in -lm... " >&6; } if ${ac_cv_lib_m___frexpieee128+:} false; then : $as_echo_n "(cached) " >&6 @@ -51424,18 +51401,18 @@ else ac_ldbl_ieee128_in_libc=no fi - if test $ac_ldbl_ieee128_in_libc = yes; then - # Determine which long double format is the compiler's default: - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + if test $ac_ldbl_ieee128_in_libc = yes; then + # Determine which long double format is the compiler's default: + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { - #ifndef __LONG_DOUBLE_IEEE128__ - #error compiler defaults to ibm128 - #endif + #ifndef __LONG_DOUBLE_IEEE128__ + #error compiler defaults to ibm128 + #endif ; return 0; @@ -51447,28 +51424,21 @@ else ac_ldbl_ieee128_default=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - # Library objects should use default long double format. - if test "$ac_ldbl_ieee128_default" = yes; then - LONG_DOUBLE_128_FLAGS="-mno-gnu-attribute" - # Except for the ones that explicitly use these flags: - LONG_DOUBLE_ALT128_COMPAT_FLAGS="-mabi=ibmlongdouble -mno-gnu-attribute -Wno-psabi" - else - LONG_DOUBLE_128_FLAGS="-mno-gnu-attribute" - LONG_DOUBLE_ALT128_COMPAT_FLAGS="-mabi=ieeelongdouble -mno-gnu-attribute -Wno-psabi" - fi - -$as_echo "#define _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT 1" >>confdefs.h - - port_specific_symbol_files="$port_specific_symbol_files \$(top_srcdir)/config/os/gnu-linux/ldbl-ieee128-extra.ver" - ac_ldbl_alt128_compat=yes + # Library objects should use default long double format. + if test "$ac_ldbl_ieee128_default" = yes; then + LONG_DOUBLE_128_FLAGS="-mno-gnu-attribute" + # Except for the ones that explicitly use these flags: + LONG_DOUBLE_ALT128_COMPAT_FLAGS="-mabi=ibmlongdouble -mno-gnu-attribute -Wno-psabi" else - ac_ldbl_alt128_compat=no + LONG_DOUBLE_128_FLAGS="-mno-gnu-attribute" + LONG_DOUBLE_ALT128_COMPAT_FLAGS="-mabi=ieeelongdouble -mno-gnu-attribute -Wno-psabi" fi - # IEEE 128-bit not possible +$as_echo "#define _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT 1" >>confdefs.h + + port_specific_symbol_files="$port_specific_symbol_files \$(top_srcdir)/config/os/gnu-linux/ldbl-ieee128-extra.ver" + ac_ldbl_alt128_compat=yes else - acl_ldbl_ieee128_in_libc=no - acl_ldbl_ieee128_default=no ac_ldbl_alt128_compat=no fi ;; diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac index d5d42a4766a6..ccb24a82be79 100644 --- a/libstdc++-v3/configure.ac +++ b/libstdc++-v3/configure.ac @@ -479,45 +479,31 @@ case "$target" in case "$target" in powerpc*-*-linux*) LONG_DOUBLE_COMPAT_FLAGS="$LONG_DOUBLE_COMPAT_FLAGS -mno-gnu-attribute" - # Eliminate little endian systems without VSX - AC_TRY_COMPILE(, [ - #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ && !defined(__VSX__) - #error "IEEE 128-bit cannot be supported on non-VSX little endian systems" - #endif - ], [ac_ieee128_possible=yes], [ac_ieee128_possible=no]) - if test $ac_ieee128_possible = yes; then - # Check for IEEE128 support in libm: - AC_CHECK_LIB(m, __frexpieee128, - [ac_ldbl_ieee128_in_libc=yes], - [ac_ldbl_ieee128_in_libc=no]) - if test $ac_ldbl_ieee128_in_libc = yes; then - # Determine which long double format is the compiler's default: - AC_TRY_COMPILE(, [ - #ifndef __LONG_DOUBLE_IEEE128__ - #error compiler defaults to ibm128 - #endif - ], [ac_ldbl_ieee128_default=yes], [ac_ldbl_ieee128_default=no]) - # Library objects should use default long double format. - if test "$ac_ldbl_ieee128_default" = yes; then - LONG_DOUBLE_128_FLAGS="-mno-gnu-attribute" - # Except for the ones that explicitly use these flags: - LONG_DOUBLE_ALT128_COMPAT_FLAGS="-mabi=ibmlongdouble -mno-gnu-attribute -Wno-psabi" - else - LONG_DOUBLE_128_FLAGS="-mno-gnu-attribute" - LONG_DOUBLE_ALT128_COMPAT_FLAGS="-mabi=ieeelongdouble -mno-gnu-attribute -Wno-psabi" - fi - AC_DEFINE([_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT],1, - [Define if compatibility should be provided for alternative 128-bit long double formats.]) - port_specific_symbol_files="$port_specific_symbol_files \$(top_srcdir)/config/os/gnu-linux/ldbl-ieee128-extra.ver" - ac_ldbl_alt128_compat=yes + # Check for IEEE128 support in libm: + AC_CHECK_LIB(m, __frexpieee128, + [ac_ldbl_ieee128_in_libc=yes], + [ac_ldbl_ieee128_in_libc=no]) + if test $ac_ldbl_ieee128_in_libc = yes; then + # Determine which long double format is the compiler's default: + AC_TRY_COMPILE(, [ + #ifndef __LONG_DOUBLE_IEEE128__ + #error compiler defaults to ibm128 + #endif + ], [ac_ldbl_ieee128_default=yes], [ac_ldbl_ieee128_default=no]) + # Library objects should use default long double format. + if test "$ac_ldbl_ieee128_default" = yes; then + LONG_DOUBLE_128_FLAGS="-mno-gnu-attribute" + # Except for the ones that explicitly use these flags: + LONG_DOUBLE_ALT128_COMPAT_FLAGS="-mabi=ibmlongdouble -mno-gnu-attribute -Wno-psabi" else - ac_ldbl_alt128_compat=no + LONG_DOUBLE_128_FLAGS="-mno-gnu-attribute" + LONG_DOUBLE_ALT128_COMPAT_FLAGS="-mabi=ieeelongdouble -mno-gnu-attribute -Wno-psabi" fi - - # IEEE 128-bit not possible + AC_DEFINE([_GLIBCXX_LONG_DOUBLE_ALT128_COMPAT],1, + [Define if compatibility should be provided for alternative 128-bit long double formats.]) + port_specific_symbol_files="$port_specific_symbol_files \$(top_srcdir)/config/os/gnu-linux/ldbl-ieee128-extra.ver" + ac_ldbl_alt128_compat=yes else - acl_ldbl_ieee128_in_libc=no - acl_ldbl_ieee128_default=no ac_ldbl_alt128_compat=no fi ;; diff --git a/libstdc++-v3/include/ext/numeric_traits.h b/libstdc++-v3/include/ext/numeric_traits.h index 0f00abb3db66..b2723bfabfa5 100644 --- a/libstdc++-v3/include/ext/numeric_traits.h +++ b/libstdc++-v3/include/ext/numeric_traits.h @@ -218,7 +218,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION struct __numeric_traits<__ibm128> : public __numeric_traits_floating<__ibm128> { }; -# elif defined __LONG_DOUBLE_IBM128__ && defined __VSX__ +# elif defined __LONG_DOUBLE_IBM128__ // long double is __ibm128, define traits for __ieee128 template<> struct __numeric_traits_floating<__ieee128>