https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116122
Adrian Bunk <bunk at stusta dot de> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |bunk at stusta dot de --- Comment #3 from Adrian Bunk <bunk at stusta dot de> --- This change was apparently intentional in Bug#109504 and I can understand the rationale there, but it can break existing compile time detection of _Float16 support (as Qt does). The relevant part in the Qt sources is: #if defined(__STDCPP_FLOAT16_T__) # define QFLOAT16_IS_NATIVE 1 using NativeFloat16Type = std::float16_t; #elif defined(Q_CC_CLANG) && defined(__FLT16_MAX__) && 0 // disabled due to https://github.com/llvm/llvm-project/issues/56963 # define QFLOAT16_IS_NATIVE 1 using NativeFloat16Type = decltype(__FLT16_MAX__); #elif defined(Q_CC_GNU_ONLY) && defined(__FLT16_MAX__) # define QFLOAT16_IS_NATIVE 1 # ifdef __ARM_FP16_FORMAT_IEEE using NativeFloat16Type = __fp16; # else using NativeFloat16Type = _Float16; # endif #else # define QFLOAT16_IS_NATIVE 0 using NativeFloat16Type = void; #endif With gcc 14 this needs -#elif defined(Q_CC_GNU_ONLY) && defined(__FLT16_MAX__) +#elif defined(Q_CC_GNU_ONLY) && defined(__FLT16_MAX__) && (!defined(__i386__) || defined(__SSE2__)) or some other similar change to check for SSE2. If this gcc change will not be reverted, it should be documented as a change in the gcc 14 "Changes" and "Porting to" documentation.