[gcc(refs/users/meissner/heads/work078)] Define __SIZEOF_FLOAT128__ and __SIZEOF_IBM128__.
Michael Meissner
meissner@gcc.gnu.org
Wed Feb 16 17:58:16 GMT 2022
https://gcc.gnu.org/g:df890e3deb6574509ad451fb6b5892927bdd2d6b
commit df890e3deb6574509ad451fb6b5892927bdd2d6b
Author: Michael Meissner <meissner@linux.ibm.com>
Date: Wed Feb 16 12:57:58 2022 -0500
Define __SIZEOF_FLOAT128__ and __SIZEOF_IBM128__.
Define the sizes of the PowerPC specific types __float128 and __ibm128 if those
types are enabled.
2022-02-16 Michael Meissner <meissner@the-meissners.org>
gcc/
PR target/99708
* config/rs6000/rs6000-c.cc (rs6000_cpu_cpp_builtins): Define
__SIZEOF_IBM128__ if the IBM 128-bit long double type is created.
Define __SIZEOF_FLOAT128__ if we have float128 support.
gcc/testsuite/
PR target/99708
* gcc.target/powerpc/pr99708.c: New test.
Diff:
---
gcc/config/rs6000/rs6000-c.cc | 7 ++++++-
gcc/testsuite/gcc.target/powerpc/pr99708.c | 21 +++++++++++++++++++++
2 files changed, 27 insertions(+), 1 deletion(-)
diff --git a/gcc/config/rs6000/rs6000-c.cc b/gcc/config/rs6000/rs6000-c.cc
index 15251efc209..17f3d1d92eb 100644
--- a/gcc/config/rs6000/rs6000-c.cc
+++ b/gcc/config/rs6000/rs6000-c.cc
@@ -622,8 +622,13 @@ rs6000_cpu_cpp_builtins (cpp_reader *pfile)
builtin_define ("__RSQRTE__");
if (TARGET_FRSQRTES)
builtin_define ("__RSQRTEF__");
+ if (ibm128_float_type_node)
+ builtin_define ("__SIZEOF_IBM128__");
if (TARGET_FLOAT128_TYPE)
- builtin_define ("__FLOAT128_TYPE__");
+ {
+ builtin_define ("__FLOAT128_TYPE__");
+ builtin_define ("__SIZEOF_FLOAT128__=16");
+ }
#ifdef TARGET_LIBC_PROVIDES_HWCAP_IN_TCB
builtin_define ("__BUILTIN_CPU_SUPPORTS__");
#endif
diff --git a/gcc/testsuite/gcc.target/powerpc/pr99708.c b/gcc/testsuite/gcc.target/powerpc/pr99708.c
new file mode 100644
index 00000000000..d478f7bc4c0
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr99708.c
@@ -0,0 +1,21 @@
+/* { dg-do run } */
+/* { require-effective-target ppc_float128_sw } */
+/* { dg-options "-O2 -mvsx -mfloat128" } */
+
+/*
+ * PR target/99708
+ *
+ * Verify that __SIZEOF_FLOAT128__ and __SIZEOF_IBM128__ are properly defined.
+ */
+
+#include <stdlib.h>
+
+int main (void)
+{
+ if (__SIZEOF_FLOAT128__ != sizeof (__float128)
+ || __SIZEOF_IBM128__ != sizeof (__ibm128))
+ abort ();
+
+ return 0;
+}
+
More information about the Gcc-cvs
mailing list