@@ -24,35 +24,34 @@ namespace Fortran::tools {
24
24
const std::string &compilerVersion, const std::string &compilerOptions) {
25
25
26
26
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
+ }
30
32
if (targetTriple.getArch () == llvm::Triple::ArchType::x86_64) {
31
33
targetCharacteristics.set_hasSubnormalFlushingControl (/* kind=*/ 3 );
32
34
targetCharacteristics.set_hasSubnormalFlushingControl (/* kind=*/ 4 );
33
35
targetCharacteristics.set_hasSubnormalFlushingControl (/* kind=*/ 8 );
34
36
}
35
-
36
37
if (targetTriple.isARM () || targetTriple.isAArch64 ()) {
37
38
targetCharacteristics.set_haltingSupportIsUnknownAtCompileTime ();
38
39
targetCharacteristics.set_ieeeFeature (
39
40
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);
48
43
}
49
44
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
52
49
#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 ;
54
52
#elif HAS_LDBL128
55
- constexpr bool f128Support = true ; // use libm wrappers
53
+ // we can use libm wrappers
54
+ constexpr bool f128Support = true ;
56
55
#else
57
56
constexpr bool f128Support = false ;
58
57
#endif
0 commit comments