diff --git a/libc/include/llvm-libc-types/cfloat128.h b/libc/include/llvm-libc-types/cfloat128.h index a371671cf6235..f76a0c1c2f5af 100644 --- a/libc/include/llvm-libc-types/cfloat128.h +++ b/libc/include/llvm-libc-types/cfloat128.h @@ -35,6 +35,7 @@ typedef _Complex _Float128 cfloat128; typedef _Complex __float128 cfloat128; #elif (LDBL_MANT_DIG == 113) #define LIBC_TYPES_HAS_CFLOAT128 +#define LIBC_TYPES_CFLOAT128_IS_COMPLEX_LONG_DOUBLE typedef _Complex long double cfloat128; #endif diff --git a/libc/src/__support/complex_type.h b/libc/src/__support/complex_type.h index 4c861b05bc752..88239886f983b 100644 --- a/libc/src/__support/complex_type.h +++ b/libc/src/__support/complex_type.h @@ -37,10 +37,12 @@ template <> struct make_complex { }; #endif #if defined(LIBC_TYPES_HAS_CFLOAT128) +#if !(LIBC_TYPES_LONG_DOUBLE_IS_FLOAT128) template <> struct make_complex { using type = cfloat128; }; #endif +#endif template using make_complex_t = typename make_complex::type; @@ -62,10 +64,12 @@ template <> struct make_real { }; #endif #if defined(LIBC_TYPES_HAS_CFLOAT128) +#if !(LIBC_TYPES_CFLOAT128_IS_COMPLEX_LONG_DOUBLE) template <> struct make_real { using type = float128; }; #endif +#endif template using make_real_t = typename make_real::type;