[gcc(refs/users/meissner/heads/work168-bugs)] Disable IEEE 128 on little endian 32-bit systems.

Michael Meissner meissner@gcc.gnu.org
Sat Jun 15 00:30:02 GMT 2024


https://gcc.gnu.org/g:3ea2d4cac5c925398e9379e05fccb21b8266cda7

commit 3ea2d4cac5c925398e9379e05fccb21b8266cda7
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Fri Jun 14 20:29:47 2024 -0400

    Disable IEEE 128 on little endian 32-bit systems.
    
    2024-06-14  Michael Meissner  <meissner@linux.ibm.com>
    
    gcc/
    
            * config/rs6000/rs6000.cc (rs6000_option_override_internal): Do not
            allow IEEE 128-bit on little endian 32-bit systems.

Diff:
---
 gcc/config/rs6000/rs6000.cc | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/gcc/config/rs6000/rs6000.cc b/gcc/config/rs6000/rs6000.cc
index c5c4191127e4..ea36e651b446 100644
--- a/gcc/config/rs6000/rs6000.cc
+++ b/gcc/config/rs6000/rs6000.cc
@@ -4146,7 +4146,8 @@ rs6000_option_override_internal (bool global_init_p)
      the keyword as well as the type.  */
   TARGET_FLOAT128_TYPE = TARGET_FLOAT128_ENABLE_TYPE && TARGET_VSX;
 
-  /* IEEE 128-bit floating point requires VSX support.  */
+  /* IEEE 128-bit floating point requires VSX support.  Disable IEEE 128-bit on
+     legacy 32-bit LE systems.  */
   if (TARGET_FLOAT128_KEYWORD)
     {
       if (!TARGET_VSX)
@@ -4154,6 +4155,16 @@ rs6000_option_override_internal (bool global_init_p)
 	  if ((rs6000_isa_flags_explicit & OPTION_MASK_FLOAT128_KEYWORD) != 0)
 	    error ("%qs requires VSX support", "-mfloat128");
 
+	  TARGET_FLOAT128_TYPE = 0;
+	  rs6000_isa_flags &= ~(OPTION_MASK_FLOAT128_KEYWORD
+				| OPTION_MASK_FLOAT128_HW);
+	}
+      else if (!TARGET_POWERPC64 && !BYTES_BIG_ENDIAN)
+	{
+	  if ((rs6000_isa_flags_explicit & OPTION_MASK_FLOAT128_KEYWORD) != 0)
+	    error ("%qs requires 64-bit support on little endian systems",
+		   "-mfloat128");
+
 	  TARGET_FLOAT128_TYPE = 0;
 	  rs6000_isa_flags &= ~(OPTION_MASK_FLOAT128_KEYWORD
 				| OPTION_MASK_FLOAT128_HW);


More information about the Gcc-cvs mailing list