@@ -24,34 +24,35 @@ namespace Fortran::tools {
24
24
const std::string &compilerVersion, const std::string &compilerOptions) {
25
25
26
26
const llvm::Triple &targetTriple{targetMachine.getTargetTriple ()};
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
- }
27
+
28
+ targetCharacteristics.set_ieeeFeature (evaluate::IeeeFeature::Halting, true );
29
+
32
30
if (targetTriple.getArch () == llvm::Triple::ArchType::x86_64) {
33
31
targetCharacteristics.set_hasSubnormalFlushingControl (/* kind=*/ 3 );
34
32
targetCharacteristics.set_hasSubnormalFlushingControl (/* kind=*/ 4 );
35
33
targetCharacteristics.set_hasSubnormalFlushingControl (/* kind=*/ 8 );
36
34
}
35
+
37
36
if (targetTriple.isARM () || targetTriple.isAArch64 ()) {
38
37
targetCharacteristics.set_haltingSupportIsUnknownAtCompileTime ();
39
38
targetCharacteristics.set_ieeeFeature (
40
39
evaluate::IeeeFeature::Halting, false );
41
- } else {
42
- targetCharacteristics.set_ieeeFeature (evaluate::IeeeFeature::Halting);
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 );
43
48
}
44
49
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
50
+ // Check for kind=16 support. See flang/runtime/Float128Math/math-entries.h.
51
+ // TODO: Take this from TargetInfo::getLongDoubleFormat for cross compilation.
49
52
#ifdef FLANG_RUNTIME_F128_MATH_LIB
50
- // we can use libquadmath wrappers
51
- constexpr bool f128Support = true ;
53
+ constexpr bool f128Support = true ; // use libquadmath wrappers
52
54
#elif HAS_LDBL128
53
- // we can use libm wrappers
54
- constexpr bool f128Support = true ;
55
+ constexpr bool f128Support = true ; // use libm wrappers
55
56
#else
56
57
constexpr bool f128Support = false ;
57
58
#endif
0 commit comments