PowerPC: Allow C/C++ to change long double type on GLIBC 2.32.

This is a new patch.  It turns off the warning about switching the long double
type via compile line if the GLIBC is 2.32 or newer.  It only does this if the
languages are C or C++, since those language libraries support switching the
long double type.  Other languages like Fortran don't have any current support
to provide both sets of interfaces to the library.

2020-10-21  Michael Meissner  <meiss...@linux.ibm.com>

        * config/rs6000/rs6000.c (rs6000_option_override_internal): Allow
        long double type to be changed for C/C++ if glibc 2.32 or newer.
---
 gcc/config/rs6000/rs6000.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 50039c0a53d..940c15f3265 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -4158,10 +4158,16 @@ rs6000_option_override_internal (bool global_init_p)
 
       if (rs6000_ieeequad != TARGET_IEEEQUAD_DEFAULT && TARGET_LONG_DOUBLE_128)
        {
+         /* Determine if the user can change the default long double type at
+            compilation time.  Only C and C++ support this, and you need GLIBC
+            2.32 or newer.  Only issue one warning.  */
          static bool warned_change_long_double;
-         if (!warned_change_long_double)
+
+         if (!warned_change_long_double
+             && (!OPTION_GLIBC
+                 || (!lang_GNU_C () && !lang_GNU_CXX ())
+                 || ((TARGET_GLIBC_MAJOR * 1000) + TARGET_GLIBC_MINOR) < 2032))
            {
-             warned_change_long_double = true;
              if (TARGET_IEEEQUAD)
                warning (OPT_Wpsabi, "Using IEEE extended precision "
                         "%<long double%>");
-- 
2.22.0


-- 
Michael Meissner, IBM
IBM, M/S 2506R, 550 King Street, Littleton, MA 01460-6245, USA
email: meiss...@linux.ibm.com, phone: +1 (978) 899-4797

Reply via email to