[libc-commits] [libc] 33a583d - [libc] Workaround for GCC on `typedef` for `_Complex __float128` (#157010)
via libc-commits
libc-commits at lists.llvm.org
Thu Sep 4 22:50:39 PDT 2025
Author: A. Jiang
Date: 2025-09-05T13:50:35+08:00
New Revision: 33a583d37795285553fde30c75a4fec3243e8bd0
URL: https://github.com/llvm/llvm-project/commit/33a583d37795285553fde30c75a4fec3243e8bd0
DIFF: https://github.com/llvm/llvm-project/commit/33a583d37795285553fde30c75a4fec3243e8bd0.diff
LOG: [libc] Workaround for GCC on `typedef` for `_Complex __float128` (#157010)
Currently, GCC can't parse `typedef _Complex __float128 cfloat128;`,
although `__typeof__` can be used as a workaround. Reported
https://gcc.gnu.org/PR121799 which was later considered as duplicate of
https://gcc.gnu.org/PR32187.
Some recent changes exposed it to GCC and then caused CI failure for
libc++. This patch adds a workaround for GCC.
Added:
Modified:
libc/include/llvm-libc-types/cfloat128.h
Removed:
################################################################################
diff --git a/libc/include/llvm-libc-types/cfloat128.h b/libc/include/llvm-libc-types/cfloat128.h
index 25b4cc7345a30..838ef1cbd9ad5 100644
--- a/libc/include/llvm-libc-types/cfloat128.h
+++ b/libc/include/llvm-libc-types/cfloat128.h
@@ -13,7 +13,12 @@
#ifdef LIBC_TYPES_HAS_CFLOAT128
#ifndef LIBC_TYPES_CFLOAT128_IS_COMPLEX_LONG_DOUBLE
+#if defined(__GNUC__) && !defined(__clang__)
+// Remove the workaround when https://gcc.gnu.org/PR32187 gets fixed.
+typedef __typeof__(_Complex __float128) cfloat128;
+#else // ^^^ workaround / no workaround vvv
typedef _Complex __float128 cfloat128;
+#endif // ^^^ workaround ^^^
#else
typedef _Complex long double cfloat128;
#endif // LIBC_TYPES_CFLOAT128_IS_COMPLEX_LONG_DOUBLE
More information about the libc-commits
mailing list