Skip to content

Revert "[flang] Warn when F128 is unsupported" #106561

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Aug 29, 2024

Conversation

tblah
Copy link
Contributor

@tblah tblah commented Aug 29, 2024

Reverts #102147

It seems some systems which should support F128 are wrongly detected as not supporting.

This might be due to checking LDBL_MANT_DIG instead of __LDBL_MANT_DIG__. I will investigate.

@llvmbot llvmbot added flang Flang issues not falling into any other category flang:fir-hlfir flang:semantics labels Aug 29, 2024
@tblah tblah requested a review from pawosm-arm August 29, 2024 14:37
@tblah tblah merged commit 8ae877a into main Aug 29, 2024
8 of 10 checks passed
@tblah tblah deleted the revert-102147-ecclescake/f128 branch August 29, 2024 14:38
@llvmbot
Copy link
Member

llvmbot commented Aug 29, 2024

@llvm/pr-subscribers-flang-semantics

Author: Tom Eccles (tblah)

Changes

Reverts llvm/llvm-project#102147

It seems some systems which should support F128 are wrongly detected as not supporting.

This might be due to checking LDBL_MANT_DIG instead of __LDBL_MANT_DIG__. I will investigate.


Full diff: https://github.com/llvm/llvm-project/pull/106561.diff

14 Files Affected:

  • (modified) flang/include/flang/Tools/TargetSetup.h (+1-18)
  • (modified) flang/module/ieee_arithmetic.f90 (-49)
  • (modified) flang/test/CMakeLists.txt (-10)
  • (modified) flang/test/Evaluate/fold-out_of_range.f90 (-1)
  • (modified) flang/test/Evaluate/folding07.f90 (-1)
  • (modified) flang/test/Lower/Intrinsics/ieee_class_queries.f90 (-1)
  • (modified) flang/test/Lower/Intrinsics/ieee_unordered.f90 (-1)
  • (modified) flang/test/Lower/common-block.f90 (+1-1)
  • (modified) flang/test/Semantics/kinds03.f90 (-1)
  • (modified) flang/test/Semantics/modfile26.f90 (-1)
  • (modified) flang/test/Semantics/realkinds-aarch64-01.f90 (-1)
  • (modified) flang/test/lit.cfg.py (+1-2)
  • (modified) flang/test/lit.site.cfg.py.in (-1)
  • (modified) flang/tools/f18/CMakeLists.txt (+1-24)
diff --git a/flang/include/flang/Tools/TargetSetup.h b/flang/include/flang/Tools/TargetSetup.h
index 60609de8809cf0..238d66c9241dd0 100644
--- a/flang/include/flang/Tools/TargetSetup.h
+++ b/flang/include/flang/Tools/TargetSetup.h
@@ -11,7 +11,6 @@
 
 #include "flang/Evaluate/target.h"
 #include "llvm/Target/TargetMachine.h"
-#include <cfloat>
 
 namespace Fortran::tools {
 
@@ -22,25 +21,9 @@ namespace Fortran::tools {
 
   const llvm::Triple &targetTriple{targetMachine.getTargetTriple()};
   // FIXME: Handle real(3) ?
-  if (targetTriple.getArch() != llvm::Triple::ArchType::x86_64) {
+  if (targetTriple.getArch() != llvm::Triple::ArchType::x86_64)
     targetCharacteristics.DisableType(
         Fortran::common::TypeCategory::Real, /*kind=*/10);
-  }
-
-  // Figure out if we can support F128: see
-  // flang/runtime/Float128Math/math-entries.h
-#ifdef FLANG_RUNTIME_F128_MATH_LIB
-  // we can use libquadmath wrappers
-  constexpr bool f128Support = true;
-#elif LDBL_MANT_DIG == 113
-  // we can use libm wrappers
-  constexpr bool f128Support = true;
-#else
-  constexpr bool f128Support = false;
-#endif
-
-  if constexpr (!f128Support)
-    targetCharacteristics.DisableType(Fortran::common::TypeCategory::Real, 16);
 
   targetCharacteristics.set_compilerOptionsString(compilerOptions)
       .set_compilerVersionString(compilerVersion);
diff --git a/flang/module/ieee_arithmetic.f90 b/flang/module/ieee_arithmetic.f90
index 32e640b9e24574..7c7721d78c1ed3 100644
--- a/flang/module/ieee_arithmetic.f90
+++ b/flang/module/ieee_arithmetic.f90
@@ -161,8 +161,6 @@ end function ieee_round_ne
   G(1) G(2) G(4) G(8) G(16)
 #define SPECIFICS_L(G) \
   G(1) G(2) G(4) G(8)
-
-#if FLANG_SUPPORT_R16
 #if __x86_64__
 #define SPECIFICS_R(G) \
   G(2) G(3) G(4) G(8) G(10) G(16)
@@ -170,24 +168,12 @@ end function ieee_round_ne
 #define SPECIFICS_R(G) \
   G(2) G(3) G(4) G(8) G(16)
 #endif
-#else
-#if __x86_64__
-#define SPECIFICS_R(G) \
-  G(2) G(3) G(4) G(8) G(10)
-#else
-#define SPECIFICS_R(G) \
-  G(2) G(3) G(4) G(8)
-#endif
-#endif
-
 #define SPECIFICS_II(G) \
   G(1,1) G(1,2) G(1,4) G(1,8) G(1,16) \
   G(2,1) G(2,2) G(2,4) G(2,8) G(2,16) \
   G(4,1) G(4,2) G(4,4) G(4,8) G(4,16) \
   G(8,1) G(8,2) G(8,4) G(8,8) G(8,16) \
   G(16,1) G(16,2) G(16,4) G(16,8) G(16,16)
-
-#if FLANG_SUPPORT_R16
 #if __x86_64__
 #define SPECIFICS_RI(G) \
   G(2,1) G(2,2) G(2,4) G(2,8) G(2,16) \
@@ -204,24 +190,7 @@ end function ieee_round_ne
   G(8,1) G(8,2) G(8,4) G(8,8) G(8,16) \
   G(16,1) G(16,2) G(16,4) G(16,8) G(16,16)
 #endif
-#else
-#if __x86_64__
-#define SPECIFICS_RI(G) \
-  G(2,1) G(2,2) G(2,4) G(2,8) \
-  G(3,1) G(3,2) G(3,4) G(3,8) \
-  G(4,1) G(4,2) G(4,4) G(4,8) \
-  G(8,1) G(8,2) G(8,4) G(8,8) \
-  G(10,1) G(10,2) G(10,4) G(10,8)
-#else
-#define SPECIFICS_RI(G) \
-  G(2,1) G(2,2) G(2,4) G(2,8) \
-  G(3,1) G(3,2) G(3,4) G(3,8) \
-  G(4,1) G(4,2) G(4,4) G(4,8) \
-  G(8,1) G(8,2) G(8,4) G(8,8)
-#endif
-#endif
 
-#if FLANG_SUPPORT_R16
 #if __x86_64__
 #define SPECIFICS_RR(G) \
   G(2,2) G(2,3) G(2,4) G(2,8) G(2,10) G(2,16) \
@@ -238,22 +207,6 @@ end function ieee_round_ne
   G(8,2) G(8,3) G(8,4) G(8,8) G(8,16) \
   G(16,2) G(16,3) G(16,4) G(16,8) G(16,16)
 #endif
-#else
-#if __x86_64__
-#define SPECIFICS_RR(G) \
-  G(2,2) G(2,3) G(2,4) G(2,8) G(2,10) \
-  G(3,2) G(3,3) G(3,4) G(3,8) G(3,10) \
-  G(4,2) G(4,3) G(4,4) G(4,8) G(4,10) \
-  G(8,2) G(8,3) G(8,4) G(8,8) G(8,10) \
-  G(10,2) G(10,3) G(10,4) G(10,8) G(10,10)
-#else
-#define SPECIFICS_RR(G) \
-  G(2,2) G(2,3) G(2,4) G(2,8) \
-  G(3,2) G(3,3) G(3,4) G(3,8) \
-  G(4,2) G(4,3) G(4,4) G(4,8) \
-  G(8,2) G(8,3) G(8,4) G(8,8)
-#endif
-#endif
 
 #define IEEE_CLASS_R(XKIND) \
   elemental type(ieee_class_type) function ieee_class_a##XKIND(x); \
@@ -509,10 +462,8 @@ end function ieee_real_a##AKIND##_i##KKIND;
   interface ieee_real
     SPECIFICS_I(IEEE_REAL_I)
     SPECIFICS_R(IEEE_REAL_R)
-#if FLANG_SUPPORT_R16
     SPECIFICS_II(IEEE_REAL_II)
     SPECIFICS_RI(IEEE_REAL_RI)
-#endif
   end interface ieee_real
   public :: ieee_real
 #undef IEEE_REAL_I
diff --git a/flang/test/CMakeLists.txt b/flang/test/CMakeLists.txt
index a18a5c6519eda4..43ad1e3312b643 100644
--- a/flang/test/CMakeLists.txt
+++ b/flang/test/CMakeLists.txt
@@ -11,16 +11,6 @@ llvm_canonicalize_cmake_booleans(
 
 set(FLANG_TOOLS_DIR ${FLANG_BINARY_DIR}/bin)
 
-# Check if 128-bit float computations can be done via long double
-check_cxx_source_compiles(
-  "#include <cfloat>
-   #if LDBL_MANT_DIG != 113
-   #error LDBL_MANT_DIG != 113
-   #endif
-   int main() { return 0; }
-  "
-  HAVE_LDBL_MANT_DIG_113)
-
 # FIXME In out-of-tree builds, "SHLIBDIR" is undefined and passing it to
 # `configure_lit_site_cfg` leads to a configuration error. This is currently
 # only required by plugins/examples, which are not supported in out-of-tree
diff --git a/flang/test/Evaluate/fold-out_of_range.f90 b/flang/test/Evaluate/fold-out_of_range.f90
index 6360eee5322bb2..5a9f900beb2d59 100644
--- a/flang/test/Evaluate/fold-out_of_range.f90
+++ b/flang/test/Evaluate/fold-out_of_range.f90
@@ -1,7 +1,6 @@
 ! RUN: %python %S/test_folding.py %s %flang_fc1 -pedantic -triple x86_64-unknown-linux-gnu
 ! UNSUPPORTED: system-windows
 ! REQUIRES: target=x86_64{{.*}}
-! REQUIRES: flang-supports-f128-math
 ! Tests folding of OUT_OF_RANGE().
 module m
   integer(1),  parameter :: i1v(*)  = [ -huge(1_1)  - 1_1,  huge(1_1) ]
diff --git a/flang/test/Evaluate/folding07.f90 b/flang/test/Evaluate/folding07.f90
index d51df7acf7b8a6..3b6a99df388268 100644
--- a/flang/test/Evaluate/folding07.f90
+++ b/flang/test/Evaluate/folding07.f90
@@ -1,4 +1,3 @@
-! REQUIRES: flang-supports-f128-math
 ! RUN: %python %S/test_folding.py %s %flang_fc1
 ! Test numeric model inquiry intrinsics
 
diff --git a/flang/test/Lower/Intrinsics/ieee_class_queries.f90 b/flang/test/Lower/Intrinsics/ieee_class_queries.f90
index b2f9df83a902a0..bb7787ea903e23 100644
--- a/flang/test/Lower/Intrinsics/ieee_class_queries.f90
+++ b/flang/test/Lower/Intrinsics/ieee_class_queries.f90
@@ -1,4 +1,3 @@
-! REQUIRES: flang-supports-f128-math
 ! RUN: bbc -emit-fir -o - %s | FileCheck %s
 
   ! CHECK-LABEL: func @_QQmain
diff --git a/flang/test/Lower/Intrinsics/ieee_unordered.f90 b/flang/test/Lower/Intrinsics/ieee_unordered.f90
index b7e81d53a2d750..a6146eff7f06e7 100644
--- a/flang/test/Lower/Intrinsics/ieee_unordered.f90
+++ b/flang/test/Lower/Intrinsics/ieee_unordered.f90
@@ -1,4 +1,3 @@
-! REQUIRES: flang-supports-f128-math
 ! RUN: bbc -emit-fir -hlfir=false -o - %s | FileCheck %s
 
 ! CHECK-LABEL: func @_QQmain
diff --git a/flang/test/Lower/common-block.f90 b/flang/test/Lower/common-block.f90
index b5c1389df45d35..94e61b8bcc33db 100644
--- a/flang/test/Lower/common-block.f90
+++ b/flang/test/Lower/common-block.f90
@@ -1,4 +1,3 @@
-! REQUIRES: flang-supports-f128-math
 ! RUN: bbc %s -o - | tco | FileCheck %s
 ! RUN: %flang -emit-llvm -S -mmlir -disable-external-name-interop %s -o - | FileCheck %s
 
@@ -79,3 +78,4 @@ subroutine s7()
   real(16) r16
   common /co1/ r16
 end subroutine
+
diff --git a/flang/test/Semantics/kinds03.f90 b/flang/test/Semantics/kinds03.f90
index a15a4a9baa7315..751d4a9ffa3cbb 100644
--- a/flang/test/Semantics/kinds03.f90
+++ b/flang/test/Semantics/kinds03.f90
@@ -1,4 +1,3 @@
-! REQUIRES: flang-supports-f128-math
 ! RUN: %python %S/test_symbols.py %s %flang_fc1
  !DEF: /MainProgram1/ipdt DerivedType
  !DEF: /MainProgram1/ipdt/k TypeParam INTEGER(4)
diff --git a/flang/test/Semantics/modfile26.f90 b/flang/test/Semantics/modfile26.f90
index 9c5d0015d91631..09dc8b0954d633 100644
--- a/flang/test/Semantics/modfile26.f90
+++ b/flang/test/Semantics/modfile26.f90
@@ -1,4 +1,3 @@
-! REQUIRES: flang-supports-f128-math
 ! RUN: %python %S/test_modfile.py %s %flang_fc1
 ! Intrinsics SELECTED_INT_KIND, SELECTED_REAL_KIND, PRECISION, RANGE,
 ! RADIX, DIGITS
diff --git a/flang/test/Semantics/realkinds-aarch64-01.f90 b/flang/test/Semantics/realkinds-aarch64-01.f90
index 2520c0b84c0e67..e22920ff991e93 100644
--- a/flang/test/Semantics/realkinds-aarch64-01.f90
+++ b/flang/test/Semantics/realkinds-aarch64-01.f90
@@ -1,5 +1,4 @@
 ! REQUIRES: aarch64-registered-target
-! REQUIRES: flang-supports-f128-math
 ! RUN: %python %S/test_modfile.py %s %flang_fc1 -triple aarch64-unknown-linux-gnu
 
 module m1
diff --git a/flang/test/lit.cfg.py b/flang/test/lit.cfg.py
index 4acbc0606d1977..37869e7e2ecd7e 100644
--- a/flang/test/lit.cfg.py
+++ b/flang/test/lit.cfg.py
@@ -216,9 +216,8 @@
 # Add features and substitutions to test F128 math support.
 # %f128-lib substitution may be used to generate check prefixes
 # for LIT tests checking for F128 library support.
-if config.flang_runtime_f128_math_lib or config.have_ldbl_mant_dig_113:
-    config.available_features.add("flang-supports-f128-math")
 if config.flang_runtime_f128_math_lib:
+    config.available_features.add("flang-supports-f128-math")
     config.available_features.add(
         "flang-f128-math-lib-" + config.flang_runtime_f128_math_lib
     )
diff --git a/flang/test/lit.site.cfg.py.in b/flang/test/lit.site.cfg.py.in
index d1a0ac763cf8a0..fe6186d7140713 100644
--- a/flang/test/lit.site.cfg.py.in
+++ b/flang/test/lit.site.cfg.py.in
@@ -31,7 +31,6 @@ if "openmp" in "@LLVM_ENABLE_RUNTIMES@".lower().split(";"):
 else:
     config.openmp_module_dir = None
 config.flang_runtime_f128_math_lib = "@FLANG_RUNTIME_F128_MATH_LIB@"
-config.have_ldbl_mant_dig_113 = "@HAVE_LDBL_MANT_DIG_113@"
 
 import lit.llvm
 lit.llvm.initialize(lit_config, config)
diff --git a/flang/tools/f18/CMakeLists.txt b/flang/tools/f18/CMakeLists.txt
index 344a781c41e957..cec4e2d8107206 100644
--- a/flang/tools/f18/CMakeLists.txt
+++ b/flang/tools/f18/CMakeLists.txt
@@ -31,25 +31,6 @@ set(MODULES_WITHOUT_IMPLEMENTATION
 
 set(MODULES ${MODULES_WITH_IMPLEMENTATION} ${MODULES_WITHOUT_IMPLEMENTATION})
 
-# Check if 128-bit float computations can be done via long double.
-check_cxx_source_compiles(
-  "#include <cfloat>
-   #if LDBL_MANT_DIG != 113
-   #error LDBL_MANT_DIG != 113
-   #endif
-   int main() { return 0; }
-  "
-  HAVE_LDBL_MANT_DIG_113)
-
-# Figure out whether we can support REAL(KIND=16)
-if (FLANG_RUNTIME_F128_MATH_LIB)
-  set(FLANG_SUPPORT_R16 "1")
-elseif (HAVE_LDBL_MANT_DIG_113)
-  set(FLANG_SUPPORT_R16 "1")
-else()
-  set(FLANG_SUPPORT_R16 "0")
-endif()
-
 # Init variable to hold extra object files coming from the Fortran modules;
 # these module files will be contributed from the CMakeLists in flang/tools/f18.
 set(module_objects "")
@@ -95,10 +76,6 @@ if (NOT CMAKE_CROSSCOMPILING)
       endif()
     endif()
 
-    set(decls "")
-    if (FLANG_SUPPORT_R16)
-      set(decls "-DFLANG_SUPPORT_R16")
-    endif()
 
     # Some modules have an implementation part that needs to be added to the
     # FortranRuntime library.
@@ -115,7 +92,7 @@ if (NOT CMAKE_CROSSCOMPILING)
     # TODO: We may need to flag this with conditional, in case Flang is built w/o OpenMP support
     add_custom_command(OUTPUT ${base}.mod ${object_output}
       COMMAND ${CMAKE_COMMAND} -E make_directory ${FLANG_INTRINSIC_MODULES_DIR}
-      COMMAND flang-new ${opts} ${decls} -cpp ${compile_with} -module-dir ${FLANG_INTRINSIC_MODULES_DIR}
+      COMMAND flang-new ${opts} -cpp ${compile_with} -module-dir ${FLANG_INTRINSIC_MODULES_DIR}
         ${FLANG_SOURCE_DIR}/module/${filename}.f90
       DEPENDS flang-new ${FLANG_SOURCE_DIR}/module/${filename}.f90 ${FLANG_SOURCE_DIR}/module/__fortran_builtins.f90 ${depends}
     )

@llvmbot
Copy link
Member

llvmbot commented Aug 29, 2024

@llvm/pr-subscribers-flang-fir-hlfir

Author: Tom Eccles (tblah)

Changes

Reverts llvm/llvm-project#102147

It seems some systems which should support F128 are wrongly detected as not supporting.

This might be due to checking LDBL_MANT_DIG instead of __LDBL_MANT_DIG__. I will investigate.


Full diff: https://github.com/llvm/llvm-project/pull/106561.diff

14 Files Affected:

  • (modified) flang/include/flang/Tools/TargetSetup.h (+1-18)
  • (modified) flang/module/ieee_arithmetic.f90 (-49)
  • (modified) flang/test/CMakeLists.txt (-10)
  • (modified) flang/test/Evaluate/fold-out_of_range.f90 (-1)
  • (modified) flang/test/Evaluate/folding07.f90 (-1)
  • (modified) flang/test/Lower/Intrinsics/ieee_class_queries.f90 (-1)
  • (modified) flang/test/Lower/Intrinsics/ieee_unordered.f90 (-1)
  • (modified) flang/test/Lower/common-block.f90 (+1-1)
  • (modified) flang/test/Semantics/kinds03.f90 (-1)
  • (modified) flang/test/Semantics/modfile26.f90 (-1)
  • (modified) flang/test/Semantics/realkinds-aarch64-01.f90 (-1)
  • (modified) flang/test/lit.cfg.py (+1-2)
  • (modified) flang/test/lit.site.cfg.py.in (-1)
  • (modified) flang/tools/f18/CMakeLists.txt (+1-24)
diff --git a/flang/include/flang/Tools/TargetSetup.h b/flang/include/flang/Tools/TargetSetup.h
index 60609de8809cf0..238d66c9241dd0 100644
--- a/flang/include/flang/Tools/TargetSetup.h
+++ b/flang/include/flang/Tools/TargetSetup.h
@@ -11,7 +11,6 @@
 
 #include "flang/Evaluate/target.h"
 #include "llvm/Target/TargetMachine.h"
-#include <cfloat>
 
 namespace Fortran::tools {
 
@@ -22,25 +21,9 @@ namespace Fortran::tools {
 
   const llvm::Triple &targetTriple{targetMachine.getTargetTriple()};
   // FIXME: Handle real(3) ?
-  if (targetTriple.getArch() != llvm::Triple::ArchType::x86_64) {
+  if (targetTriple.getArch() != llvm::Triple::ArchType::x86_64)
     targetCharacteristics.DisableType(
         Fortran::common::TypeCategory::Real, /*kind=*/10);
-  }
-
-  // Figure out if we can support F128: see
-  // flang/runtime/Float128Math/math-entries.h
-#ifdef FLANG_RUNTIME_F128_MATH_LIB
-  // we can use libquadmath wrappers
-  constexpr bool f128Support = true;
-#elif LDBL_MANT_DIG == 113
-  // we can use libm wrappers
-  constexpr bool f128Support = true;
-#else
-  constexpr bool f128Support = false;
-#endif
-
-  if constexpr (!f128Support)
-    targetCharacteristics.DisableType(Fortran::common::TypeCategory::Real, 16);
 
   targetCharacteristics.set_compilerOptionsString(compilerOptions)
       .set_compilerVersionString(compilerVersion);
diff --git a/flang/module/ieee_arithmetic.f90 b/flang/module/ieee_arithmetic.f90
index 32e640b9e24574..7c7721d78c1ed3 100644
--- a/flang/module/ieee_arithmetic.f90
+++ b/flang/module/ieee_arithmetic.f90
@@ -161,8 +161,6 @@ end function ieee_round_ne
   G(1) G(2) G(4) G(8) G(16)
 #define SPECIFICS_L(G) \
   G(1) G(2) G(4) G(8)
-
-#if FLANG_SUPPORT_R16
 #if __x86_64__
 #define SPECIFICS_R(G) \
   G(2) G(3) G(4) G(8) G(10) G(16)
@@ -170,24 +168,12 @@ end function ieee_round_ne
 #define SPECIFICS_R(G) \
   G(2) G(3) G(4) G(8) G(16)
 #endif
-#else
-#if __x86_64__
-#define SPECIFICS_R(G) \
-  G(2) G(3) G(4) G(8) G(10)
-#else
-#define SPECIFICS_R(G) \
-  G(2) G(3) G(4) G(8)
-#endif
-#endif
-
 #define SPECIFICS_II(G) \
   G(1,1) G(1,2) G(1,4) G(1,8) G(1,16) \
   G(2,1) G(2,2) G(2,4) G(2,8) G(2,16) \
   G(4,1) G(4,2) G(4,4) G(4,8) G(4,16) \
   G(8,1) G(8,2) G(8,4) G(8,8) G(8,16) \
   G(16,1) G(16,2) G(16,4) G(16,8) G(16,16)
-
-#if FLANG_SUPPORT_R16
 #if __x86_64__
 #define SPECIFICS_RI(G) \
   G(2,1) G(2,2) G(2,4) G(2,8) G(2,16) \
@@ -204,24 +190,7 @@ end function ieee_round_ne
   G(8,1) G(8,2) G(8,4) G(8,8) G(8,16) \
   G(16,1) G(16,2) G(16,4) G(16,8) G(16,16)
 #endif
-#else
-#if __x86_64__
-#define SPECIFICS_RI(G) \
-  G(2,1) G(2,2) G(2,4) G(2,8) \
-  G(3,1) G(3,2) G(3,4) G(3,8) \
-  G(4,1) G(4,2) G(4,4) G(4,8) \
-  G(8,1) G(8,2) G(8,4) G(8,8) \
-  G(10,1) G(10,2) G(10,4) G(10,8)
-#else
-#define SPECIFICS_RI(G) \
-  G(2,1) G(2,2) G(2,4) G(2,8) \
-  G(3,1) G(3,2) G(3,4) G(3,8) \
-  G(4,1) G(4,2) G(4,4) G(4,8) \
-  G(8,1) G(8,2) G(8,4) G(8,8)
-#endif
-#endif
 
-#if FLANG_SUPPORT_R16
 #if __x86_64__
 #define SPECIFICS_RR(G) \
   G(2,2) G(2,3) G(2,4) G(2,8) G(2,10) G(2,16) \
@@ -238,22 +207,6 @@ end function ieee_round_ne
   G(8,2) G(8,3) G(8,4) G(8,8) G(8,16) \
   G(16,2) G(16,3) G(16,4) G(16,8) G(16,16)
 #endif
-#else
-#if __x86_64__
-#define SPECIFICS_RR(G) \
-  G(2,2) G(2,3) G(2,4) G(2,8) G(2,10) \
-  G(3,2) G(3,3) G(3,4) G(3,8) G(3,10) \
-  G(4,2) G(4,3) G(4,4) G(4,8) G(4,10) \
-  G(8,2) G(8,3) G(8,4) G(8,8) G(8,10) \
-  G(10,2) G(10,3) G(10,4) G(10,8) G(10,10)
-#else
-#define SPECIFICS_RR(G) \
-  G(2,2) G(2,3) G(2,4) G(2,8) \
-  G(3,2) G(3,3) G(3,4) G(3,8) \
-  G(4,2) G(4,3) G(4,4) G(4,8) \
-  G(8,2) G(8,3) G(8,4) G(8,8)
-#endif
-#endif
 
 #define IEEE_CLASS_R(XKIND) \
   elemental type(ieee_class_type) function ieee_class_a##XKIND(x); \
@@ -509,10 +462,8 @@ end function ieee_real_a##AKIND##_i##KKIND;
   interface ieee_real
     SPECIFICS_I(IEEE_REAL_I)
     SPECIFICS_R(IEEE_REAL_R)
-#if FLANG_SUPPORT_R16
     SPECIFICS_II(IEEE_REAL_II)
     SPECIFICS_RI(IEEE_REAL_RI)
-#endif
   end interface ieee_real
   public :: ieee_real
 #undef IEEE_REAL_I
diff --git a/flang/test/CMakeLists.txt b/flang/test/CMakeLists.txt
index a18a5c6519eda4..43ad1e3312b643 100644
--- a/flang/test/CMakeLists.txt
+++ b/flang/test/CMakeLists.txt
@@ -11,16 +11,6 @@ llvm_canonicalize_cmake_booleans(
 
 set(FLANG_TOOLS_DIR ${FLANG_BINARY_DIR}/bin)
 
-# Check if 128-bit float computations can be done via long double
-check_cxx_source_compiles(
-  "#include <cfloat>
-   #if LDBL_MANT_DIG != 113
-   #error LDBL_MANT_DIG != 113
-   #endif
-   int main() { return 0; }
-  "
-  HAVE_LDBL_MANT_DIG_113)
-
 # FIXME In out-of-tree builds, "SHLIBDIR" is undefined and passing it to
 # `configure_lit_site_cfg` leads to a configuration error. This is currently
 # only required by plugins/examples, which are not supported in out-of-tree
diff --git a/flang/test/Evaluate/fold-out_of_range.f90 b/flang/test/Evaluate/fold-out_of_range.f90
index 6360eee5322bb2..5a9f900beb2d59 100644
--- a/flang/test/Evaluate/fold-out_of_range.f90
+++ b/flang/test/Evaluate/fold-out_of_range.f90
@@ -1,7 +1,6 @@
 ! RUN: %python %S/test_folding.py %s %flang_fc1 -pedantic -triple x86_64-unknown-linux-gnu
 ! UNSUPPORTED: system-windows
 ! REQUIRES: target=x86_64{{.*}}
-! REQUIRES: flang-supports-f128-math
 ! Tests folding of OUT_OF_RANGE().
 module m
   integer(1),  parameter :: i1v(*)  = [ -huge(1_1)  - 1_1,  huge(1_1) ]
diff --git a/flang/test/Evaluate/folding07.f90 b/flang/test/Evaluate/folding07.f90
index d51df7acf7b8a6..3b6a99df388268 100644
--- a/flang/test/Evaluate/folding07.f90
+++ b/flang/test/Evaluate/folding07.f90
@@ -1,4 +1,3 @@
-! REQUIRES: flang-supports-f128-math
 ! RUN: %python %S/test_folding.py %s %flang_fc1
 ! Test numeric model inquiry intrinsics
 
diff --git a/flang/test/Lower/Intrinsics/ieee_class_queries.f90 b/flang/test/Lower/Intrinsics/ieee_class_queries.f90
index b2f9df83a902a0..bb7787ea903e23 100644
--- a/flang/test/Lower/Intrinsics/ieee_class_queries.f90
+++ b/flang/test/Lower/Intrinsics/ieee_class_queries.f90
@@ -1,4 +1,3 @@
-! REQUIRES: flang-supports-f128-math
 ! RUN: bbc -emit-fir -o - %s | FileCheck %s
 
   ! CHECK-LABEL: func @_QQmain
diff --git a/flang/test/Lower/Intrinsics/ieee_unordered.f90 b/flang/test/Lower/Intrinsics/ieee_unordered.f90
index b7e81d53a2d750..a6146eff7f06e7 100644
--- a/flang/test/Lower/Intrinsics/ieee_unordered.f90
+++ b/flang/test/Lower/Intrinsics/ieee_unordered.f90
@@ -1,4 +1,3 @@
-! REQUIRES: flang-supports-f128-math
 ! RUN: bbc -emit-fir -hlfir=false -o - %s | FileCheck %s
 
 ! CHECK-LABEL: func @_QQmain
diff --git a/flang/test/Lower/common-block.f90 b/flang/test/Lower/common-block.f90
index b5c1389df45d35..94e61b8bcc33db 100644
--- a/flang/test/Lower/common-block.f90
+++ b/flang/test/Lower/common-block.f90
@@ -1,4 +1,3 @@
-! REQUIRES: flang-supports-f128-math
 ! RUN: bbc %s -o - | tco | FileCheck %s
 ! RUN: %flang -emit-llvm -S -mmlir -disable-external-name-interop %s -o - | FileCheck %s
 
@@ -79,3 +78,4 @@ subroutine s7()
   real(16) r16
   common /co1/ r16
 end subroutine
+
diff --git a/flang/test/Semantics/kinds03.f90 b/flang/test/Semantics/kinds03.f90
index a15a4a9baa7315..751d4a9ffa3cbb 100644
--- a/flang/test/Semantics/kinds03.f90
+++ b/flang/test/Semantics/kinds03.f90
@@ -1,4 +1,3 @@
-! REQUIRES: flang-supports-f128-math
 ! RUN: %python %S/test_symbols.py %s %flang_fc1
  !DEF: /MainProgram1/ipdt DerivedType
  !DEF: /MainProgram1/ipdt/k TypeParam INTEGER(4)
diff --git a/flang/test/Semantics/modfile26.f90 b/flang/test/Semantics/modfile26.f90
index 9c5d0015d91631..09dc8b0954d633 100644
--- a/flang/test/Semantics/modfile26.f90
+++ b/flang/test/Semantics/modfile26.f90
@@ -1,4 +1,3 @@
-! REQUIRES: flang-supports-f128-math
 ! RUN: %python %S/test_modfile.py %s %flang_fc1
 ! Intrinsics SELECTED_INT_KIND, SELECTED_REAL_KIND, PRECISION, RANGE,
 ! RADIX, DIGITS
diff --git a/flang/test/Semantics/realkinds-aarch64-01.f90 b/flang/test/Semantics/realkinds-aarch64-01.f90
index 2520c0b84c0e67..e22920ff991e93 100644
--- a/flang/test/Semantics/realkinds-aarch64-01.f90
+++ b/flang/test/Semantics/realkinds-aarch64-01.f90
@@ -1,5 +1,4 @@
 ! REQUIRES: aarch64-registered-target
-! REQUIRES: flang-supports-f128-math
 ! RUN: %python %S/test_modfile.py %s %flang_fc1 -triple aarch64-unknown-linux-gnu
 
 module m1
diff --git a/flang/test/lit.cfg.py b/flang/test/lit.cfg.py
index 4acbc0606d1977..37869e7e2ecd7e 100644
--- a/flang/test/lit.cfg.py
+++ b/flang/test/lit.cfg.py
@@ -216,9 +216,8 @@
 # Add features and substitutions to test F128 math support.
 # %f128-lib substitution may be used to generate check prefixes
 # for LIT tests checking for F128 library support.
-if config.flang_runtime_f128_math_lib or config.have_ldbl_mant_dig_113:
-    config.available_features.add("flang-supports-f128-math")
 if config.flang_runtime_f128_math_lib:
+    config.available_features.add("flang-supports-f128-math")
     config.available_features.add(
         "flang-f128-math-lib-" + config.flang_runtime_f128_math_lib
     )
diff --git a/flang/test/lit.site.cfg.py.in b/flang/test/lit.site.cfg.py.in
index d1a0ac763cf8a0..fe6186d7140713 100644
--- a/flang/test/lit.site.cfg.py.in
+++ b/flang/test/lit.site.cfg.py.in
@@ -31,7 +31,6 @@ if "openmp" in "@LLVM_ENABLE_RUNTIMES@".lower().split(";"):
 else:
     config.openmp_module_dir = None
 config.flang_runtime_f128_math_lib = "@FLANG_RUNTIME_F128_MATH_LIB@"
-config.have_ldbl_mant_dig_113 = "@HAVE_LDBL_MANT_DIG_113@"
 
 import lit.llvm
 lit.llvm.initialize(lit_config, config)
diff --git a/flang/tools/f18/CMakeLists.txt b/flang/tools/f18/CMakeLists.txt
index 344a781c41e957..cec4e2d8107206 100644
--- a/flang/tools/f18/CMakeLists.txt
+++ b/flang/tools/f18/CMakeLists.txt
@@ -31,25 +31,6 @@ set(MODULES_WITHOUT_IMPLEMENTATION
 
 set(MODULES ${MODULES_WITH_IMPLEMENTATION} ${MODULES_WITHOUT_IMPLEMENTATION})
 
-# Check if 128-bit float computations can be done via long double.
-check_cxx_source_compiles(
-  "#include <cfloat>
-   #if LDBL_MANT_DIG != 113
-   #error LDBL_MANT_DIG != 113
-   #endif
-   int main() { return 0; }
-  "
-  HAVE_LDBL_MANT_DIG_113)
-
-# Figure out whether we can support REAL(KIND=16)
-if (FLANG_RUNTIME_F128_MATH_LIB)
-  set(FLANG_SUPPORT_R16 "1")
-elseif (HAVE_LDBL_MANT_DIG_113)
-  set(FLANG_SUPPORT_R16 "1")
-else()
-  set(FLANG_SUPPORT_R16 "0")
-endif()
-
 # Init variable to hold extra object files coming from the Fortran modules;
 # these module files will be contributed from the CMakeLists in flang/tools/f18.
 set(module_objects "")
@@ -95,10 +76,6 @@ if (NOT CMAKE_CROSSCOMPILING)
       endif()
     endif()
 
-    set(decls "")
-    if (FLANG_SUPPORT_R16)
-      set(decls "-DFLANG_SUPPORT_R16")
-    endif()
 
     # Some modules have an implementation part that needs to be added to the
     # FortranRuntime library.
@@ -115,7 +92,7 @@ if (NOT CMAKE_CROSSCOMPILING)
     # TODO: We may need to flag this with conditional, in case Flang is built w/o OpenMP support
     add_custom_command(OUTPUT ${base}.mod ${object_output}
       COMMAND ${CMAKE_COMMAND} -E make_directory ${FLANG_INTRINSIC_MODULES_DIR}
-      COMMAND flang-new ${opts} ${decls} -cpp ${compile_with} -module-dir ${FLANG_INTRINSIC_MODULES_DIR}
+      COMMAND flang-new ${opts} -cpp ${compile_with} -module-dir ${FLANG_INTRINSIC_MODULES_DIR}
         ${FLANG_SOURCE_DIR}/module/${filename}.f90
       DEPENDS flang-new ${FLANG_SOURCE_DIR}/module/${filename}.f90 ${FLANG_SOURCE_DIR}/module/__fortran_builtins.f90 ${depends}
     )

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
flang:fir-hlfir flang:semantics flang Flang issues not falling into any other category
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants