diff --git a/compiler/rustc_codegen_llvm/src/llvm_util.rs b/compiler/rustc_codegen_llvm/src/llvm_util.rs index feccbd953cc1c..298b58dd0007f 100644 --- a/compiler/rustc_codegen_llvm/src/llvm_util.rs +++ b/compiler/rustc_codegen_llvm/src/llvm_util.rs @@ -374,7 +374,8 @@ fn update_target_reliable_float_cfg(sess: &Session, cfg: &mut TargetConfig) { cfg.has_reliable_f16 = match (target_arch, target_os) { // Unsupported (fixed in llvm22) (Arch::Arm64EC, _) if major < 22 => false, - // MinGW ABI bugs + // MinGW ABI bugs resolved in GCC 16 + // but our toolchain hasn't been updated. (Arch::X86_64, Os::Windows) if *target_env == Env::Gnu && *target_abi != CfgAbi::Llvm => { false } @@ -401,8 +402,10 @@ fn update_target_reliable_float_cfg(sess: &Session, cfg: &mut TargetConfig) { (Arch::PowerPC | Arch::PowerPC64, _) => false, // ABI unsupported (fixed in llvm22) (Arch::Sparc, _) if major < 22 => false, - // MinGW ABI bugs - (Arch::X86_64, Os::Windows) if *target_env == Env::Gnu && *target_abi != CfgAbi::Llvm => { + // MinGW ABI bugs (fixed in llvm23) + (Arch::X86_64, Os::Windows) + if *target_env == Env::Gnu && *target_abi != CfgAbi::Llvm && major < 23 => + { false } // There are no known problems on other platforms, so the only requirement is that symbols