[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