@@ -24,35 +24,34 @@ namespace Fortran::tools {
2424 const std::string &compilerVersion, const std::string &compilerOptions) {
2525
2626 const llvm::Triple &targetTriple{targetMachine.getTargetTriple ()};
27-
28- targetCharacteristics.set_ieeeFeature (evaluate::IeeeFeature::Halting, true );
29-
27+ // FIXME: Handle real(3) ?
28+ if (targetTriple.getArch () != llvm::Triple::ArchType::x86_64) {
29+ targetCharacteristics.DisableType (
30+ Fortran::common::TypeCategory::Real, /* kind=*/ 10 );
31+ }
3032 if (targetTriple.getArch () == llvm::Triple::ArchType::x86_64) {
3133 targetCharacteristics.set_hasSubnormalFlushingControl (/* kind=*/ 3 );
3234 targetCharacteristics.set_hasSubnormalFlushingControl (/* kind=*/ 4 );
3335 targetCharacteristics.set_hasSubnormalFlushingControl (/* kind=*/ 8 );
3436 }
35-
3637 if (targetTriple.isARM () || targetTriple.isAArch64 ()) {
3738 targetCharacteristics.set_haltingSupportIsUnknownAtCompileTime ();
3839 targetCharacteristics.set_ieeeFeature (
3940 evaluate::IeeeFeature::Halting, false );
40- targetCharacteristics.set_hasSubnormalFlushingControl (/* kind=*/ 3 );
41- targetCharacteristics.set_hasSubnormalFlushingControl (/* kind=*/ 4 );
42- targetCharacteristics.set_hasSubnormalFlushingControl (/* kind=*/ 8 );
43- }
44-
45- if (targetTriple.getArch () != llvm::Triple::ArchType::x86_64) {
46- targetCharacteristics.DisableType (
47- Fortran::common::TypeCategory::Real, /* kind=*/ 10 );
41+ } else {
42+ targetCharacteristics.set_ieeeFeature (evaluate::IeeeFeature::Halting);
4843 }
4944
50- // Check for kind=16 support. See flang/runtime/Float128Math/math-entries.h.
51- // TODO: Take this from TargetInfo::getLongDoubleFormat for cross compilation.
45+ // Figure out if we can support F128: see
46+ // flang/runtime/Float128Math/math-entries.h
47+ // TODO: this should be taken from TargetInfo::getLongDoubleFormat to support
48+ // cross-compilation
5249#ifdef FLANG_RUNTIME_F128_MATH_LIB
53- constexpr bool f128Support = true ; // use libquadmath wrappers
50+ // we can use libquadmath wrappers
51+ constexpr bool f128Support = true ;
5452#elif HAS_LDBL128
55- constexpr bool f128Support = true ; // use libm wrappers
53+ // we can use libm wrappers
54+ constexpr bool f128Support = true ;
5655#else
5756 constexpr bool f128Support = false ;
5857#endif
0 commit comments