[libc-commits] [libc] ea9f8b7 - [libc] Fix detection of cfloat128 (#185486)

via libc-commits libc-commits at lists.llvm.org
Wed Mar 11 07:12:36 PDT 2026


Author: bkuhls
Date: 2026-03-11T10:12:23-04:00
New Revision: ea9f8b77467fdbfab0d5bb3342e97de6b54e4e2d

URL: https://github.com/llvm/llvm-project/commit/ea9f8b77467fdbfab0d5bb3342e97de6b54e4e2d
DIFF: https://github.com/llvm/llvm-project/commit/ea9f8b77467fdbfab0d5bb3342e97de6b54e4e2d.diff

LOG: [libc] Fix detection of cfloat128 (#185486)

Building compiler-rt with aarch64-buildroot-linux-gnu-gcc 15.2 causes a
build error:
```
compiler-rt-22.1.0/cmake/Modules/../../libc/src/__support/CPP/type_traits/is_complex.h:44:31:
 error: 'cfloat128' was not declared in this scope; did you mean 'float128'? [-Wtemplate-body]
```
According to
https://gcc.gnu.org/onlinedocs/gcc-15.2.0/gcc/Floating-Types.html
__float128 is not available on aarch64.

Analyzing the gcc defines for aarch64 seems to prove it:
```
$ aarch64-buildroot-linux-gnu-gcc -v
Target: aarch64-buildroot-linux-gnu
gcc version 15.2.0 (Buildroot 2026.02-114-gdadec9da56)

$ echo | aarch64-buildroot-linux-gnu-gcc -dM -E - | grep __GCC_IEC_559_COMPLEX
  #define __GCC_IEC_559_COMPLEX 2

$ echo | aarch64-buildroot-linux-gnu-gcc -dM -E - | grep __STDC_IEC_60559_COMPLEX__
  #define __STDC_IEC_60559_COMPLEX__ 201404L

$ echo | aarch64-buildroot-linux-gnu-gcc -dM -E - | grep -i float128
$
```
In contrast gcc for x86_64:
```
$ x86_64-buildroot-linux-gnu-gcc -v
Target: x86_64-buildroot-linux-gnu
gcc version 15.2.0 (Buildroot 2026.02-112-gd12ac02486)

$ echo | x86_64-buildroot-linux-gnu-gcc -dM -E - | grep __GCC_IEC_559_COMPLEX
  #define __GCC_IEC_559_COMPLEX 2

$ echo | x86_64-buildroot-linux-gnu-gcc -dM -E - | grep __STDC_IEC_60559_COMPLEX__
  #define __STDC_IEC_60559_COMPLEX__ 201404L

$ echo | x86_64-buildroot-linux-gnu-gcc -dM -E - | grep -i float128
  #define __SIZEOF_FLOAT128__ 16
```
This patch changes the or-condition to an and-condition for
    \_\_STDC_IEC_60559_COMPLEX\_\_ and \_\_SIZEOF_FLOAT128\_\_.

Signed-off-by: Bernd Kuhls <bernd at kuhls.net>

Added: 
    

Modified: 
    libc/include/llvm-libc-macros/cfloat128-macros.h

Removed: 
    


################################################################################
diff  --git a/libc/include/llvm-libc-macros/cfloat128-macros.h b/libc/include/llvm-libc-macros/cfloat128-macros.h
index 5f28cfa21aaee..ff4aa530685de 100644
--- a/libc/include/llvm-libc-macros/cfloat128-macros.h
+++ b/libc/include/llvm-libc-macros/cfloat128-macros.h
@@ -27,7 +27,7 @@
 #define LIBC_TYPES_HAS_CFLOAT128
 #endif
 #elif defined(__GNUC__)
-#if (defined(__STDC_IEC_60559_COMPLEX__) || defined(__SIZEOF_FLOAT128__)) &&   \
+#if (defined(__STDC_IEC_60559_COMPLEX__) && defined(__SIZEOF_FLOAT128__)) &&   \
     (__GNUC__ >= 13 || (!defined(__cplusplus)))
 #define LIBC_TYPES_HAS_CFLOAT128
 #endif


        


More information about the libc-commits mailing list