@@ -371,24 +371,25 @@ fn update_target_reliable_float_cfg(sess: &Session, cfg: &mut TargetConfig) {
371
371
let target_abi = sess. target . options . abi . as_ref ( ) ;
372
372
let target_pointer_width = sess. target . pointer_width ;
373
373
let version = get_version ( ) ;
374
+ let lt_20_1_1 = version < ( 20 , 1 , 1 ) ;
375
+ let lt_21_0_0 = version < ( 21 , 0 , 0 ) ;
374
376
375
377
cfg. has_reliable_f16 = match ( target_arch, target_os) {
376
- // Selection failure <https://github.com/llvm/llvm-project/issues/50374>
377
- ( "s390x" , _) => false ,
378
- // LLVM crash without neon <https://github.com/llvm/llvm-project/issues/129394> (now fixed)
378
+ // LLVM crash without neon <https://github.com/llvm/llvm-project/issues/129394> (fixed in llvm20)
379
379
( "aarch64" , _)
380
- if !cfg. target_features . iter ( ) . any ( |f| f. as_str ( ) == "neon" )
381
- && version < ( 20 , 1 , 1 ) =>
380
+ if !cfg. target_features . iter ( ) . any ( |f| f. as_str ( ) == "neon" ) && lt_20_1_1 =>
382
381
{
383
382
false
384
383
}
385
384
// Unsupported <https://github.com/llvm/llvm-project/issues/94434>
386
385
( "arm64ec" , _) => false ,
386
+ // Selection failure <https://github.com/llvm/llvm-project/issues/50374> (fixed in llvm21)
387
+ ( "s390x" , _) if lt_21_0_0 => false ,
387
388
// MinGW ABI bugs <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115054>
388
389
( "x86_64" , "windows" ) if target_env == "gnu" && target_abi != "llvm" => false ,
389
390
// Infinite recursion <https://github.com/llvm/llvm-project/issues/97981>
390
391
( "csky" , _) => false ,
391
- ( "hexagon" , _) => false ,
392
+ ( "hexagon" , _) if lt_21_0_0 => false , // (fixed in llvm21)
392
393
( "powerpc" | "powerpc64" , _) => false ,
393
394
( "sparc" | "sparc64" , _) => false ,
394
395
( "wasm32" | "wasm64" , _) => false ,
@@ -401,10 +402,10 @@ fn update_target_reliable_float_cfg(sess: &Session, cfg: &mut TargetConfig) {
401
402
cfg. has_reliable_f128 = match ( target_arch, target_os) {
402
403
// Unsupported <https://github.com/llvm/llvm-project/issues/94434>
403
404
( "arm64ec" , _) => false ,
404
- // Selection bug <https://github.com/llvm/llvm-project/issues/96432>
405
- ( "mips64" | "mips64r6" , _) => false ,
406
- // Selection bug <https://github.com/llvm/llvm-project/issues/95471>
407
- ( "nvptx64" , _) => false ,
405
+ // Selection bug <https://github.com/llvm/llvm-project/issues/96432> (fixed in llvm20)
406
+ ( "mips64" | "mips64r6" , _) if lt_20_1_1 => false ,
407
+ // Selection bug <https://github.com/llvm/llvm-project/issues/95471> (fixed in llvm21)
408
+ ( "nvptx64" , _) if lt_21_0_0 => false ,
408
409
// Unsupported https://github.com/llvm/llvm-project/issues/121122
409
410
( "amdgpu" , _) => false ,
410
411
// ABI bugs <https://github.com/rust-lang/rust/issues/125109> et al. (full
@@ -413,8 +414,8 @@ fn update_target_reliable_float_cfg(sess: &Session, cfg: &mut TargetConfig) {
413
414
// ABI unsupported <https://github.com/llvm/llvm-project/issues/41838>
414
415
( "sparc" , _) => false ,
415
416
// Stack alignment bug <https://github.com/llvm/llvm-project/issues/77401>. NB: tests may
416
- // not fail if our compiler-builtins is linked.
417
- ( "x86" , _) => false ,
417
+ // not fail if our compiler-builtins is linked. (fixed in llvm21)
418
+ ( "x86" , _) if lt_21_0_0 => false ,
418
419
// MinGW ABI bugs <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115054>
419
420
( "x86_64" , "windows" ) if target_env == "gnu" && target_abi != "llvm" => false ,
420
421
// There are no known problems on other platforms, so the only requirement is that symbols
0 commit comments