[clang] [flang] [lld] [Flang] Don't use FortranDecimal for runtime (PR #121997)
Michael Kruse via llvm-commits
llvm-commits at lists.llvm.org
Sun Jan 12 17:20:47 PST 2025
https://github.com/Meinersbur updated https://github.com/llvm/llvm-project/pull/121997
>From a08aa48fb4955f9d16c6172580505c100076b5d4 Mon Sep 17 00:00:00 2001
From: Michael Kruse <llvm-project at meinersbur.de>
Date: Tue, 7 Jan 2025 17:05:39 +0100
Subject: [PATCH 1/4] Join FortranDecimal into FortranCommon
---
clang/lib/Driver/ToolChains/CommonArgs.cpp | 3 +-
clang/lib/Driver/ToolChains/Flang.cpp | 4 -
flang/docs/FlangDriver.md | 5 +-
.../binary-floating-point.h | 8 +-
.../flang/{Decimal => Common}/decimal.h | 11 ++-
flang/lib/CMakeLists.txt | 1 -
flang/lib/Common/CMakeLists.txt | 2 +
.../big-radix-floating-point.h | 12 +--
.../{Decimal => Common}/binary-to-decimal.cpp | 4 +-
.../{Decimal => Common}/decimal-to-binary.cpp | 6 +-
flang/lib/Decimal/CMakeLists.txt | 86 -------------------
flang/lib/Evaluate/CMakeLists.txt | 1 -
flang/lib/Evaluate/real.cpp | 2 +-
flang/runtime/CMakeLists.txt | 14 +--
flang/runtime/edit-input.h | 2 +-
flang/runtime/edit-output.h | 2 +-
flang/runtime/environment.h | 2 +-
flang/runtime/format-implementation.h | 2 +-
flang/runtime/format.h | 2 +-
flang/test/CMakeLists.txt | 1 -
flang/test/Driver/linker-flags.f90 | 6 +-
.../test/Driver/msvc-dependent-lib-flags.f90 | 4 -
flang/test/Driver/nostdlib.f90 | 1 -
flang/test/Runtime/no-cpp-dep.c | 2 +-
flang/test/lit.cfg.py | 3 -
flang/unittests/Decimal/CMakeLists.txt | 4 +-
flang/unittests/Decimal/quick-sanity-test.cpp | 2 +-
flang/unittests/Decimal/thorough-test.cpp | 2 +-
flang/unittests/Evaluate/CMakeLists.txt | 2 -
lld/COFF/MinGW.cpp | 1 -
30 files changed, 40 insertions(+), 157 deletions(-)
rename flang/include/flang/{Decimal => Common}/binary-floating-point.h (96%)
rename flang/include/flang/{Decimal => Common}/decimal.h (95%)
rename flang/lib/{Decimal => Common}/big-radix-floating-point.h (97%)
rename flang/lib/{Decimal => Common}/binary-to-decimal.cpp (99%)
rename flang/lib/{Decimal => Common}/decimal-to-binary.cpp (99%)
delete mode 100644 flang/lib/Decimal/CMakeLists.txt
diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp
index 60214c4d59cee5..9e9872975de9c2 100644
--- a/clang/lib/Driver/ToolChains/CommonArgs.cpp
+++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp
@@ -1317,7 +1317,7 @@ void tools::addOpenMPHostOffloadingArgs(const Compilation &C,
/// Add Fortran runtime libs
void tools::addFortranRuntimeLibs(const ToolChain &TC, const ArgList &Args,
llvm::opt::ArgStringList &CmdArgs) {
- // Link FortranRuntime and FortranDecimal
+ // Link FortranRuntime
// These are handled earlier on Windows by telling the frontend driver to
// add the correct libraries to link against as dependents in the object
// file.
@@ -1334,7 +1334,6 @@ void tools::addFortranRuntimeLibs(const ToolChain &TC, const ArgList &Args,
addAsNeededOption(TC, Args, CmdArgs, /*as_needed=*/false);
}
CmdArgs.push_back("-lFortranRuntime");
- CmdArgs.push_back("-lFortranDecimal");
addArchSpecificRPath(TC, Args, CmdArgs);
}
diff --git a/clang/lib/Driver/ToolChains/Flang.cpp b/clang/lib/Driver/ToolChains/Flang.cpp
index 7034e5b475c1d3..749af4ada9a696 100644
--- a/clang/lib/Driver/ToolChains/Flang.cpp
+++ b/clang/lib/Driver/ToolChains/Flang.cpp
@@ -357,21 +357,18 @@ static void processVSRuntimeLibrary(const ToolChain &TC, const ArgList &Args,
CmdArgs.push_back("-D_MT");
CmdArgs.push_back("--dependent-lib=libcmt");
CmdArgs.push_back("--dependent-lib=FortranRuntime.static.lib");
- CmdArgs.push_back("--dependent-lib=FortranDecimal.static.lib");
break;
case options::OPT__SLASH_MTd:
CmdArgs.push_back("-D_MT");
CmdArgs.push_back("-D_DEBUG");
CmdArgs.push_back("--dependent-lib=libcmtd");
CmdArgs.push_back("--dependent-lib=FortranRuntime.static_dbg.lib");
- CmdArgs.push_back("--dependent-lib=FortranDecimal.static_dbg.lib");
break;
case options::OPT__SLASH_MD:
CmdArgs.push_back("-D_MT");
CmdArgs.push_back("-D_DLL");
CmdArgs.push_back("--dependent-lib=msvcrt");
CmdArgs.push_back("--dependent-lib=FortranRuntime.dynamic.lib");
- CmdArgs.push_back("--dependent-lib=FortranDecimal.dynamic.lib");
break;
case options::OPT__SLASH_MDd:
CmdArgs.push_back("-D_MT");
@@ -379,7 +376,6 @@ static void processVSRuntimeLibrary(const ToolChain &TC, const ArgList &Args,
CmdArgs.push_back("-D_DLL");
CmdArgs.push_back("--dependent-lib=msvcrtd");
CmdArgs.push_back("--dependent-lib=FortranRuntime.dynamic_dbg.lib");
- CmdArgs.push_back("--dependent-lib=FortranDecimal.dynamic_dbg.lib");
break;
}
}
diff --git a/flang/docs/FlangDriver.md b/flang/docs/FlangDriver.md
index 23cbab30ee903e..8131e6ffd514dc 100644
--- a/flang/docs/FlangDriver.md
+++ b/flang/docs/FlangDriver.md
@@ -175,19 +175,18 @@ like this:
```
$ flang -v -o example example.o
-"/usr/bin/ld" [...] example.o [...] "-lFortranRuntime" "-lFortranDecimal" [...]
+"/usr/bin/ld" [...] example.o [...] "-lFortranRuntime" [...]
```
The automatically added libraries are:
* `FortranRuntime`: Provides most of the Flang runtime library.
-* `FortranDecimal`: Provides operations for decimal numbers.
If the code is C/C++ based and invokes Fortran routines, one can either use Clang
or Flang as the linker driver. If Clang is used, it will automatically all
required runtime libraries needed by C++ (e.g., for STL) to the linker invocation.
In this case, one has to explicitly provide the Fortran runtime libraries
-`FortranRuntime` and/or `FortranDecimal`. An alternative is to use Flang to link.
+`FortranRuntime`. An alternative is to use Flang to link.
In this case, it may be required to explicitly supply C++ runtime libraries.
On Darwin, the logical root where the system libraries are located (sysroot)
diff --git a/flang/include/flang/Decimal/binary-floating-point.h b/flang/include/flang/Common/binary-floating-point.h
similarity index 96%
rename from flang/include/flang/Decimal/binary-floating-point.h
rename to flang/include/flang/Common/binary-floating-point.h
index 1e0cde97d98e61..705acc31bdfb21 100644
--- a/flang/include/flang/Decimal/binary-floating-point.h
+++ b/flang/include/flang/Common/binary-floating-point.h
@@ -1,4 +1,4 @@
-//===-- include/flang/Decimal/binary-floating-point.h -----------*- C++ -*-===//
+//===-- include/flang/Common/binary-floating-point.h ------------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
@@ -6,8 +6,8 @@
//
//===----------------------------------------------------------------------===//
-#ifndef FORTRAN_DECIMAL_BINARY_FLOATING_POINT_H_
-#define FORTRAN_DECIMAL_BINARY_FLOATING_POINT_H_
+#ifndef FORTRAN_COMMON_BINARY_FLOATING_POINT_H_
+#define FORTRAN_COMMON_BINARY_FLOATING_POINT_H_
// Access and manipulate the fields of an IEEE-754 binary
// floating-point value via a generalized template.
@@ -208,4 +208,4 @@ template <int BINARY_PRECISION> class BinaryFloatingPointNumber {
RawType raw_{0};
};
} // namespace Fortran::decimal
-#endif
+#endif /* FORTRAN_COMMON_BINARY_FLOATING_POINT_H_ */
diff --git a/flang/include/flang/Decimal/decimal.h b/flang/include/flang/Common/decimal.h
similarity index 95%
rename from flang/include/flang/Decimal/decimal.h
rename to flang/include/flang/Common/decimal.h
index 443163d058e28b..c086f97129f6a5 100644
--- a/flang/include/flang/Decimal/decimal.h
+++ b/flang/include/flang/Common/decimal.h
@@ -1,16 +1,15 @@
-/*===-- include/flang/Decimal/decimal.h ---------------------------*- C++ -*-===
+/*===-- include/flang/Common/decimal.h ------------------------------*- C -*-===
*
* Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
* See https://llvm.org/LICENSE.txt for license information.
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
*
- * ===-----------------------------------------------------------------------===
- */
+ *===----------------------------------------------------------------------===*/
/* C and C++ API for binary-to/from-decimal conversion package. */
-#ifndef FORTRAN_DECIMAL_DECIMAL_H_
-#define FORTRAN_DECIMAL_DECIMAL_H_
+#ifndef FORTRAN_COMMON_DECIMAL_H_
+#define FORTRAN_COMMON_DECIMAL_H_
#include "flang/Common/api-attrs.h"
#include <stddef.h>
@@ -137,4 +136,4 @@ RT_API_ATTRS enum NS(ConversionResultFlags) ConvertDecimalToLongDouble(
#ifdef __cplusplus
} // extern "C"
#endif
-#endif
+#endif /* FORTRAN_COMMON_DECIMAL_H_ */
diff --git a/flang/lib/CMakeLists.txt b/flang/lib/CMakeLists.txt
index f41d4df1f07e3c..e5a5e504ec1a4e 100644
--- a/flang/lib/CMakeLists.txt
+++ b/flang/lib/CMakeLists.txt
@@ -1,6 +1,5 @@
add_subdirectory(Common)
add_subdirectory(Evaluate)
-add_subdirectory(Decimal)
add_subdirectory(Lower)
add_subdirectory(Parser)
add_subdirectory(Semantics)
diff --git a/flang/lib/Common/CMakeLists.txt b/flang/lib/Common/CMakeLists.txt
index de6bea396f3cbe..3e5f0b13af8881 100644
--- a/flang/lib/Common/CMakeLists.txt
+++ b/flang/lib/Common/CMakeLists.txt
@@ -35,6 +35,8 @@ if(FLANG_VENDOR)
endif()
add_flang_library(FortranCommon
+ binary-to-decimal.cpp
+ decimal-to-binary.cpp
Fortran.cpp
Fortran-features.cpp
default-kinds.cpp
diff --git a/flang/lib/Decimal/big-radix-floating-point.h b/flang/lib/Common/big-radix-floating-point.h
similarity index 97%
rename from flang/lib/Decimal/big-radix-floating-point.h
rename to flang/lib/Common/big-radix-floating-point.h
index f9afebf5b3d703..6d247f3796eea5 100644
--- a/flang/lib/Decimal/big-radix-floating-point.h
+++ b/flang/lib/Common/big-radix-floating-point.h
@@ -1,4 +1,4 @@
-//===-- lib/Decimal/big-radix-floating-point.h ------------------*- C++ -*-===//
+//===-- lib/Common/big-radix-floating-point.h -------------------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
@@ -6,8 +6,8 @@
//
//===----------------------------------------------------------------------===//
-#ifndef FORTRAN_DECIMAL_BIG_RADIX_FLOATING_POINT_H_
-#define FORTRAN_DECIMAL_BIG_RADIX_FLOATING_POINT_H_
+#ifndef FORTRAN_COMMON_BIG_RADIX_FLOATING_POINT_H_
+#define FORTRAN_COMMON_BIG_RADIX_FLOATING_POINT_H_
// This is a helper class for use in floating-point conversions between
// binary and decimal representations. It holds a multiple-precision
@@ -21,11 +21,11 @@
// for conversions between binary and decimal representations; it is not
// a general-purpose facility.
+#include "flang/Common/binary-floating-point.h"
#include "flang/Common/bit-population-count.h"
+#include "flang/Common/decimal.h"
#include "flang/Common/leading-zero-bit-count.h"
#include "flang/Common/uint128.h"
-#include "flang/Decimal/binary-floating-point.h"
-#include "flang/Decimal/decimal.h"
#include <cinttypes>
#include <limits>
#include <type_traits>
@@ -393,4 +393,4 @@ template <int PREC, int LOG10RADIX = 16> class BigRadixFloatingPointNumber {
enum FortranRounding rounding_ { RoundNearest };
};
} // namespace Fortran::decimal
-#endif
+#endif /* FORTRAN_COMMON_BIG_RADIX_FLOATING_POINT_H_ */
diff --git a/flang/lib/Decimal/binary-to-decimal.cpp b/flang/lib/Common/binary-to-decimal.cpp
similarity index 99%
rename from flang/lib/Decimal/binary-to-decimal.cpp
rename to flang/lib/Common/binary-to-decimal.cpp
index b64865e95df24d..fb2caefdae8fa1 100644
--- a/flang/lib/Decimal/binary-to-decimal.cpp
+++ b/flang/lib/Common/binary-to-decimal.cpp
@@ -1,4 +1,4 @@
-//===-- lib/Decimal/binary-to-decimal.cpp ---------------------------------===//
+//===-- lib/Common/binary-to-decimal.cpp ------------------------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
@@ -7,7 +7,7 @@
//===----------------------------------------------------------------------===//
#include "big-radix-floating-point.h"
-#include "flang/Decimal/decimal.h"
+#include "flang/Common/decimal.h"
#include <cassert>
#include <cfloat>
#include <string>
diff --git a/flang/lib/Decimal/decimal-to-binary.cpp b/flang/lib/Common/decimal-to-binary.cpp
similarity index 99%
rename from flang/lib/Decimal/decimal-to-binary.cpp
rename to flang/lib/Common/decimal-to-binary.cpp
index 94c51774237399..cbf1664e9c240d 100644
--- a/flang/lib/Decimal/decimal-to-binary.cpp
+++ b/flang/lib/Common/decimal-to-binary.cpp
@@ -1,4 +1,4 @@
-//===-- lib/Decimal/decimal-to-binary.cpp ---------------------------------===//
+//===-- lib/Common/decimal-to-binary.cpp ------------------------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
@@ -7,10 +7,10 @@
//===----------------------------------------------------------------------===//
#include "big-radix-floating-point.h"
+#include "flang/Common/binary-floating-point.h"
#include "flang/Common/bit-population-count.h"
+#include "flang/Common/decimal.h"
#include "flang/Common/leading-zero-bit-count.h"
-#include "flang/Decimal/binary-floating-point.h"
-#include "flang/Decimal/decimal.h"
#include "flang/Runtime/freestanding-tools.h"
#include <cinttypes>
#include <cstring>
diff --git a/flang/lib/Decimal/CMakeLists.txt b/flang/lib/Decimal/CMakeLists.txt
deleted file mode 100644
index 880b190f1c5815..00000000000000
--- a/flang/lib/Decimal/CMakeLists.txt
+++ /dev/null
@@ -1,86 +0,0 @@
-if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
- cmake_minimum_required(VERSION 3.20.0)
-
- project(FortranDecimal C CXX)
-
- set(CMAKE_CXX_STANDARD 17)
- set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
- set(CMAKE_CXX_EXTENSIONS OFF)
-
- set(FLANG_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../..")
-
- set(LLVM_COMMON_CMAKE_UTILS "${FLANG_SOURCE_DIR}/../cmake")
- set(LLVM_CMAKE_UTILS "${FLANG_SOURCE_DIR}/../llvm/cmake")
- set(CLANG_CMAKE_UTILS "${FLANG_SOURCE_DIR}/../clang/cmake")
-
- # Add path for custom modules
- list(INSERT CMAKE_MODULE_PATH 0
- "${FLANG_SOURCE_DIR}/cmake"
- "${FLANG_SOURCE_DIR}/cmake/modules"
- "${LLVM_COMMON_CMAKE_UTILS}"
- "${LLVM_COMMON_CMAKE_UTILS}/Modules"
- "${LLVM_CMAKE_UTILS}"
- "${LLVM_CMAKE_UTILS}/modules"
- "${CLANG_CMAKE_UTILS}/modules"
- )
-
- include(AddClang)
- include(AddLLVM)
- include(AddFlang)
- include(HandleLLVMOptions)
-
- include(TestBigEndian)
- test_big_endian(IS_BIGENDIAN)
- if (IS_BIGENDIAN)
- add_compile_definitions(FLANG_BIG_ENDIAN=1)
- else ()
- add_compile_definitions(FLANG_LITTLE_ENDIAN=1)
- endif ()
- include_directories(BEFORE
- ${FLANG_SOURCE_DIR}/include)
-endif()
-
-check_cxx_compiler_flag(-fno-lto FLANG_RUNTIME_HAS_FNO_LTO_FLAG)
-if (FLANG_RUNTIME_HAS_FNO_LTO_FLAG)
- append("-fno-lto" CMAKE_CXX_FLAGS)
-endif()
-
-# Disable libstdc++ assertions, even in an LLVM_ENABLE_ASSERTIONS build, to
-# avoid an unwanted dependency on libstdc++.so.
-add_definitions(-U_GLIBCXX_ASSERTIONS)
-
-set(sources
- binary-to-decimal.cpp
- decimal-to-binary.cpp
-)
-
-include(AddFlangOffloadRuntime)
-enable_cuda_compilation(FortranDecimal "${sources}")
-enable_omp_offload_compilation("${sources}")
-
-add_flang_library(FortranDecimal INSTALL_WITH_TOOLCHAIN ${sources})
-
-if (DEFINED MSVC)
- set(CMAKE_MSVC_RUNTIME_LIBRARY MultiThreaded)
- add_flang_library(FortranDecimal.static INSTALL_WITH_TOOLCHAIN
- binary-to-decimal.cpp
- decimal-to-binary.cpp
- )
- set(CMAKE_MSVC_RUNTIME_LIBRARY MultiThreadedDLL)
- add_flang_library(FortranDecimal.dynamic INSTALL_WITH_TOOLCHAIN
- binary-to-decimal.cpp
- decimal-to-binary.cpp
- )
- set(CMAKE_MSVC_RUNTIME_LIBRARY MultiThreadedDebug)
- add_flang_library(FortranDecimal.static_dbg INSTALL_WITH_TOOLCHAIN
- binary-to-decimal.cpp
- decimal-to-binary.cpp
- )
- set(CMAKE_MSVC_RUNTIME_LIBRARY MultiThreadedDebugDLL)
- add_flang_library(FortranDecimal.dynamic_dbg INSTALL_WITH_TOOLCHAIN
- binary-to-decimal.cpp
- decimal-to-binary.cpp
- )
- add_dependencies(FortranDecimal FortranDecimal.static FortranDecimal.dynamic
- FortranDecimal.static_dbg FortranDecimal.dynamic_dbg)
-endif()
diff --git a/flang/lib/Evaluate/CMakeLists.txt b/flang/lib/Evaluate/CMakeLists.txt
index b38f450d746ea7..ebdc55cff91c43 100644
--- a/flang/lib/Evaluate/CMakeLists.txt
+++ b/flang/lib/Evaluate/CMakeLists.txt
@@ -61,7 +61,6 @@ add_flang_library(FortranEvaluate
LINK_LIBS
FortranCommon
- FortranDecimal
FortranParser
${LIBPGMATH}
${QUADMATHLIB}
diff --git a/flang/lib/Evaluate/real.cpp b/flang/lib/Evaluate/real.cpp
index 2c0f2833f07dc5..af6df14f119c53 100644
--- a/flang/lib/Evaluate/real.cpp
+++ b/flang/lib/Evaluate/real.cpp
@@ -9,7 +9,7 @@
#include "flang/Evaluate/real.h"
#include "int-power.h"
#include "flang/Common/idioms.h"
-#include "flang/Decimal/decimal.h"
+#include "flang/Common/decimal.h"
#include "flang/Parser/characters.h"
#include "llvm/Support/raw_ostream.h"
#include <limits>
diff --git a/flang/runtime/CMakeLists.txt b/flang/runtime/CMakeLists.txt
index fbfaae9a880648..8e74467aa399eb 100644
--- a/flang/runtime/CMakeLists.txt
+++ b/flang/runtime/CMakeLists.txt
@@ -111,6 +111,8 @@ add_definitions(-U_LIBCPP_ENABLE_ASSERTIONS)
add_subdirectory(Float128Math)
set(sources
+ ${FLANG_SOURCE_DIR}/lib/Common/binary-to-decimal.cpp
+ ${FLANG_SOURCE_DIR}/lib/Common/decimal-to-binary.cpp
ISO_Fortran_binding.cpp
allocator-registry.cpp
allocatable.cpp
@@ -270,39 +272,27 @@ endif()
if (NOT DEFINED MSVC)
add_flang_library(FortranRuntime
${sources}
- LINK_LIBS
- FortranDecimal
INSTALL_WITH_TOOLCHAIN
)
else()
add_flang_library(FortranRuntime
${sources}
- LINK_LIBS
- FortranDecimal
)
set(CMAKE_MSVC_RUNTIME_LIBRARY MultiThreaded)
add_flang_library(FortranRuntime.static ${sources}
- LINK_LIBS
- FortranDecimal.static
INSTALL_WITH_TOOLCHAIN)
set_target_properties(FortranRuntime.static PROPERTIES FOLDER "Flang/Runtime Libraries")
set(CMAKE_MSVC_RUNTIME_LIBRARY MultiThreadedDLL)
add_flang_library(FortranRuntime.dynamic ${sources}
- LINK_LIBS
- FortranDecimal.dynamic
INSTALL_WITH_TOOLCHAIN)
set_target_properties(FortranRuntime.dynamic PROPERTIES FOLDER "Flang/Runtime Libraries")
set(CMAKE_MSVC_RUNTIME_LIBRARY MultiThreadedDebug)
add_flang_library(FortranRuntime.static_dbg ${sources}
- LINK_LIBS
- FortranDecimal.static_dbg
INSTALL_WITH_TOOLCHAIN)
set_target_properties(FortranRuntime.static_dbg PROPERTIES FOLDER "Flang/Runtime Libraries")
set(CMAKE_MSVC_RUNTIME_LIBRARY MultiThreadedDebugDLL)
add_flang_library(FortranRuntime.dynamic_dbg ${sources}
- LINK_LIBS
- FortranDecimal.dynamic_dbg
INSTALL_WITH_TOOLCHAIN)
set_target_properties(FortranRuntime.dynamic_dbg PROPERTIES FOLDER "Flang/Runtime Libraries")
add_dependencies(FortranRuntime FortranRuntime.static FortranRuntime.dynamic
diff --git a/flang/runtime/edit-input.h b/flang/runtime/edit-input.h
index 55a7a455781719..50d1db6e024053 100644
--- a/flang/runtime/edit-input.h
+++ b/flang/runtime/edit-input.h
@@ -11,7 +11,7 @@
#include "format.h"
#include "io-stmt.h"
-#include "flang/Decimal/decimal.h"
+#include "flang/Common/decimal.h"
namespace Fortran::runtime::io {
diff --git a/flang/runtime/edit-output.h b/flang/runtime/edit-output.h
index 42cc993f98cc1c..578c7c762f2e36 100644
--- a/flang/runtime/edit-output.h
+++ b/flang/runtime/edit-output.h
@@ -21,7 +21,7 @@
#include "format.h"
#include "io-stmt.h"
#include "flang/Common/uint128.h"
-#include "flang/Decimal/decimal.h"
+#include "flang/Common/decimal.h"
namespace Fortran::runtime::io {
diff --git a/flang/runtime/environment.h b/flang/runtime/environment.h
index b8b9f10e4e57f5..dfa8c14dd64081 100644
--- a/flang/runtime/environment.h
+++ b/flang/runtime/environment.h
@@ -10,7 +10,7 @@
#define FORTRAN_RUNTIME_ENVIRONMENT_H_
#include "flang/Common/optional.h"
-#include "flang/Decimal/decimal.h"
+#include "flang/Common/decimal.h"
struct EnvironmentDefaultList;
diff --git a/flang/runtime/format-implementation.h b/flang/runtime/format-implementation.h
index 46204ca927c135..783463ace8b27f 100644
--- a/flang/runtime/format-implementation.h
+++ b/flang/runtime/format-implementation.h
@@ -16,7 +16,7 @@
#include "io-stmt.h"
#include "memory.h"
#include "flang/Common/format.h"
-#include "flang/Decimal/decimal.h"
+#include "flang/Common/decimal.h"
#include "flang/Runtime/main.h"
#include <algorithm>
#include <cstring>
diff --git a/flang/runtime/format.h b/flang/runtime/format.h
index 815bf70685e647..25aa8e9961e74a 100644
--- a/flang/runtime/format.h
+++ b/flang/runtime/format.h
@@ -15,7 +15,7 @@
#include "io-error.h"
#include "flang/Common/Fortran-consts.h"
#include "flang/Common/optional.h"
-#include "flang/Decimal/decimal.h"
+#include "flang/Common/decimal.h"
#include "flang/Runtime/freestanding-tools.h"
#include <cinttypes>
diff --git a/flang/test/CMakeLists.txt b/flang/test/CMakeLists.txt
index cab214c2ef4c8c..e38c9b50259376 100644
--- a/flang/test/CMakeLists.txt
+++ b/flang/test/CMakeLists.txt
@@ -72,7 +72,6 @@ set(FLANG_TEST_DEPENDS
llvm-readobj
split-file
FortranRuntime
- FortranDecimal
)
if (LLVM_ENABLE_PLUGINS AND NOT WIN32)
list(APPEND FLANG_TEST_DEPENDS Bye)
diff --git a/flang/test/Driver/linker-flags.f90 b/flang/test/Driver/linker-flags.f90
index ac9500d7c45cec..fdeb95e4dd97c6 100644
--- a/flang/test/Driver/linker-flags.f90
+++ b/flang/test/Driver/linker-flags.f90
@@ -33,7 +33,7 @@
! SOLARIS-F128NONE-NOT: FortranFloat128Math
! UNIX-F128LIBQUADMATH-SAME: "-lFortranFloat128Math" "--as-needed" "-lquadmath" "--no-as-needed"
! SOLARIS-F128LIBQUADMATH-SAME: "-lFortranFloat128Math" "-z" "ignore" "-lquadmath" "-z" "record"
-! UNIX-SAME: "-lFortranRuntime" "-lFortranDecimal" "-lm"
+! UNIX-SAME: "-lFortranRuntime" "-lm"
! COMPILER-RT: "{{.*}}{{\\|/}}libclang_rt.builtins.a"
! DARWIN-LABEL: "{{.*}}ld{{(\.exe)?}}"
@@ -41,20 +41,18 @@
! DARWIN-F128NONE-NOT: FortranFloat128Math
! DARWIN-F128LIBQUADMATH-SAME: "-lFortranFloat128Math" "--as-needed" "-lquadmath" "--no-as-needed"
! DARWIN-SAME: -lFortranRuntime
-! DARWIN-SAME: -lFortranDecimal
! HAIKU-LABEL: "{{.*}}ld{{(\.exe)?}}"
! HAIKU-SAME: "[[object_file]]"
! HAIKU-F128NONE-NOT: FortranFloat128Math
! HAIKU-F128LIBQUADMATH-SAME: "-lFortranFloat128Math" "--as-needed" "-lquadmath" "--no-as-needed"
-! HAIKU-SAME: "-lFortranRuntime" "-lFortranDecimal"
+! HAIKU-SAME: "-lFortranRuntime"
! MINGW-LABEL: "{{.*}}ld{{(\.exe)?}}"
! MINGW-SAME: "[[object_file]]"
! MINGW-F128NONE-NOT: FortranFloat128Math
! MINGW-F128LIBQUADMATH-SAME: "-lFortranFloat128Math" "--as-needed" "-lquadmath" "--no-as-needed"
! MINGW-SAME: -lFortranRuntime
-! MINGW-SAME: -lFortranDecimal
! NOTE: This also matches lld-link (when CLANG_DEFAULT_LINKER=lld) and
! any .exe suffix that is added when resolving to the full path of
diff --git a/flang/test/Driver/msvc-dependent-lib-flags.f90 b/flang/test/Driver/msvc-dependent-lib-flags.f90
index 765917f07d8e72..befe61fdadcd14 100644
--- a/flang/test/Driver/msvc-dependent-lib-flags.f90
+++ b/flang/test/Driver/msvc-dependent-lib-flags.f90
@@ -8,7 +8,6 @@
! MSVC-SAME: -D_MT
! MSVC-SAME: --dependent-lib=libcmt
! MSVC-SAME: --dependent-lib=FortranRuntime.static.lib
-! MSVC-SAME: --dependent-lib=FortranDecimal.static.lib
! MSVC-DEBUG: -fc1
! MSVC-DEBUG-SAME: --dependent-lib=clang_rt.builtins.lib
@@ -16,7 +15,6 @@
! MSVC-DEBUG-SAME: -D_DEBUG
! MSVC-DEBUG-SAME: --dependent-lib=libcmtd
! MSVC-DEBUG-SAME: --dependent-lib=FortranRuntime.static_dbg.lib
-! MSVC-DEBUG-SAME: --dependent-lib=FortranDecimal.static_dbg.lib
! MSVC-DLL: -fc1
! MSVC-DLL-SAME: --dependent-lib=clang_rt.builtins.lib
@@ -24,7 +22,6 @@
! MSVC-DLL-SAME: -D_DLL
! MSVC-DLL-SAME: --dependent-lib=msvcrt
! MSVC-DLL-SAME: --dependent-lib=FortranRuntime.dynamic.lib
-! MSVC-DLL-SAME: --dependent-lib=FortranDecimal.dynamic.lib
! MSVC-DLL-DEBUG: -fc1
! MSVC-DLL-DEBUG-SAME: --dependent-lib=clang_rt.builtins.lib
@@ -33,4 +30,3 @@
! MSVC-DLL-DEBUG-SAME: -D_DLL
! MSVC-DLL-DEBUG-SAME: --dependent-lib=msvcrtd
! MSVC-DLL-DEBUG-SAME: --dependent-lib=FortranRuntime.dynamic_dbg.lib
-! MSVC-DLL-DEBUG-SAME: --dependent-lib=FortranDecimal.dynamic_dbg.lib
diff --git a/flang/test/Driver/nostdlib.f90 b/flang/test/Driver/nostdlib.f90
index cd707e632a45ff..ab7c675fe7b77d 100644
--- a/flang/test/Driver/nostdlib.f90
+++ b/flang/test/Driver/nostdlib.f90
@@ -25,5 +25,4 @@
! platform individually.
! CHECK-NOT: "-lFortranRuntime"
-! CHECK-NOT: "-lFortranDecimal"
! CHECK-NOT: "-lgcc"
diff --git a/flang/test/Runtime/no-cpp-dep.c b/flang/test/Runtime/no-cpp-dep.c
index 606a5d189f7199..b1a5fa004014cc 100644
--- a/flang/test/Runtime/no-cpp-dep.c
+++ b/flang/test/Runtime/no-cpp-dep.c
@@ -6,7 +6,7 @@ a C compiler.
REQUIRES: c-compiler
RUN: %if system-aix %{ export OBJECT_MODE=64 %}
-RUN: %cc -std=c99 %s -I%include %libruntime %libdecimal -lm \
+RUN: %cc -std=c99 %s -I%include %libruntime -lm \
RUN: %if system-aix %{-lpthread %}
RUN: rm a.out
*/
diff --git a/flang/test/lit.cfg.py b/flang/test/lit.cfg.py
index f43234fb125b7e..c452b6d231c89f 100644
--- a/flang/test/lit.cfg.py
+++ b/flang/test/lit.cfg.py
@@ -168,12 +168,10 @@
# we don't have one, we can just disable the test.
if config.cc:
libruntime = os.path.join(config.flang_lib_dir, "libFortranRuntime.a")
- libdecimal = os.path.join(config.flang_lib_dir, "libFortranDecimal.a")
include = os.path.join(config.flang_src_dir, "include")
if (
os.path.isfile(libruntime)
- and os.path.isfile(libdecimal)
and os.path.isdir(include)
):
config.available_features.add("c-compiler")
@@ -183,7 +181,6 @@
)
)
tools.append(ToolSubst("%libruntime", command=libruntime, unresolved="fatal"))
- tools.append(ToolSubst("%libdecimal", command=libdecimal, unresolved="fatal"))
tools.append(ToolSubst("%include", command=include, unresolved="fatal"))
# Add all the tools and their substitutions (if applicable). Use the search paths provided for
diff --git a/flang/unittests/Decimal/CMakeLists.txt b/flang/unittests/Decimal/CMakeLists.txt
index d301a9d3628c56..02bf1b0d7e13d3 100644
--- a/flang/unittests/Decimal/CMakeLists.txt
+++ b/flang/unittests/Decimal/CMakeLists.txt
@@ -1,10 +1,10 @@
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
add_flang_nongtest_unittest(quick-sanity-test
- FortranDecimal
+ FortranCommon
)
# This test is not run by default as it takes a long time to execute.
add_flang_nongtest_unittest(thorough-test
SLOW_TEST
- FortranDecimal
+ FortranCommon
)
diff --git a/flang/unittests/Decimal/quick-sanity-test.cpp b/flang/unittests/Decimal/quick-sanity-test.cpp
index dafb075307ab6a..c36c73b817e1f9 100644
--- a/flang/unittests/Decimal/quick-sanity-test.cpp
+++ b/flang/unittests/Decimal/quick-sanity-test.cpp
@@ -1,4 +1,4 @@
-#include "flang/Decimal/decimal.h"
+#include "flang/Common/decimal.h"
#include "llvm/Support/raw_ostream.h"
#include <cinttypes>
#include <cstdio>
diff --git a/flang/unittests/Decimal/thorough-test.cpp b/flang/unittests/Decimal/thorough-test.cpp
index 46951f33eb8fee..0f7a2d4b33e764 100644
--- a/flang/unittests/Decimal/thorough-test.cpp
+++ b/flang/unittests/Decimal/thorough-test.cpp
@@ -1,4 +1,4 @@
-#include "flang/Decimal/decimal.h"
+#include "flang/Common/decimal.h"
#include "llvm/Support/raw_ostream.h"
#include <cinttypes>
#include <cstdio>
diff --git a/flang/unittests/Evaluate/CMakeLists.txt b/flang/unittests/Evaluate/CMakeLists.txt
index 52eb385f4763fb..c008304c095575 100644
--- a/flang/unittests/Evaluate/CMakeLists.txt
+++ b/flang/unittests/Evaluate/CMakeLists.txt
@@ -43,7 +43,6 @@ add_flang_nongtest_unittest(intrinsics
FortranCommon
FortranEvaluateTesting
FortranEvaluate
- FortranDecimal
FortranSemantics
FortranParser
FortranRuntime
@@ -64,7 +63,6 @@ set(LLVM_REQUIRES_RTTI ON)
add_flang_nongtest_unittest(real
FortranEvaluateTesting
FortranEvaluate
- FortranDecimal
FortranSemantics
)
llvm_update_compile_flags(real.test)
diff --git a/lld/COFF/MinGW.cpp b/lld/COFF/MinGW.cpp
index 76f5a0a7500b9d..797ab37f069810 100644
--- a/lld/COFF/MinGW.cpp
+++ b/lld/COFF/MinGW.cpp
@@ -51,7 +51,6 @@ AutoExporter::AutoExporter(
"libc++",
"libc++abi",
"libFortranRuntime",
- "libFortranDecimal",
"libunwind",
"libmsvcrt",
"libucrtbase",
>From 090ce709977631b7bd5615572766418091c3f25a Mon Sep 17 00:00:00 2001
From: Michael Kruse <llvm-project at meinersbur.de>
Date: Wed, 8 Jan 2025 15:17:17 +0100
Subject: [PATCH 2/4] clang-format headers
---
flang/lib/Evaluate/real.cpp | 2 +-
flang/runtime/edit-output.h | 2 +-
flang/runtime/environment.h | 2 +-
flang/runtime/format-implementation.h | 2 +-
flang/runtime/format.h | 2 +-
flang/unittests/Evaluate/CMakeLists.txt | 1 +
6 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/flang/lib/Evaluate/real.cpp b/flang/lib/Evaluate/real.cpp
index af6df14f119c53..4c78a0ab658e0e 100644
--- a/flang/lib/Evaluate/real.cpp
+++ b/flang/lib/Evaluate/real.cpp
@@ -8,8 +8,8 @@
#include "flang/Evaluate/real.h"
#include "int-power.h"
-#include "flang/Common/idioms.h"
#include "flang/Common/decimal.h"
+#include "flang/Common/idioms.h"
#include "flang/Parser/characters.h"
#include "llvm/Support/raw_ostream.h"
#include <limits>
diff --git a/flang/runtime/edit-output.h b/flang/runtime/edit-output.h
index 578c7c762f2e36..6ae49265b64df5 100644
--- a/flang/runtime/edit-output.h
+++ b/flang/runtime/edit-output.h
@@ -20,8 +20,8 @@
#include "format.h"
#include "io-stmt.h"
-#include "flang/Common/uint128.h"
#include "flang/Common/decimal.h"
+#include "flang/Common/uint128.h"
namespace Fortran::runtime::io {
diff --git a/flang/runtime/environment.h b/flang/runtime/environment.h
index dfa8c14dd64081..90aa1e8dd28d77 100644
--- a/flang/runtime/environment.h
+++ b/flang/runtime/environment.h
@@ -9,8 +9,8 @@
#ifndef FORTRAN_RUNTIME_ENVIRONMENT_H_
#define FORTRAN_RUNTIME_ENVIRONMENT_H_
-#include "flang/Common/optional.h"
#include "flang/Common/decimal.h"
+#include "flang/Common/optional.h"
struct EnvironmentDefaultList;
diff --git a/flang/runtime/format-implementation.h b/flang/runtime/format-implementation.h
index 783463ace8b27f..1dd526ce897aea 100644
--- a/flang/runtime/format-implementation.h
+++ b/flang/runtime/format-implementation.h
@@ -15,8 +15,8 @@
#include "format.h"
#include "io-stmt.h"
#include "memory.h"
-#include "flang/Common/format.h"
#include "flang/Common/decimal.h"
+#include "flang/Common/format.h"
#include "flang/Runtime/main.h"
#include <algorithm>
#include <cstring>
diff --git a/flang/runtime/format.h b/flang/runtime/format.h
index 25aa8e9961e74a..8362c7233b688f 100644
--- a/flang/runtime/format.h
+++ b/flang/runtime/format.h
@@ -14,8 +14,8 @@
#include "environment.h"
#include "io-error.h"
#include "flang/Common/Fortran-consts.h"
-#include "flang/Common/optional.h"
#include "flang/Common/decimal.h"
+#include "flang/Common/optional.h"
#include "flang/Runtime/freestanding-tools.h"
#include <cinttypes>
diff --git a/flang/unittests/Evaluate/CMakeLists.txt b/flang/unittests/Evaluate/CMakeLists.txt
index c008304c095575..210a397e46b675 100644
--- a/flang/unittests/Evaluate/CMakeLists.txt
+++ b/flang/unittests/Evaluate/CMakeLists.txt
@@ -63,6 +63,7 @@ set(LLVM_REQUIRES_RTTI ON)
add_flang_nongtest_unittest(real
FortranEvaluateTesting
FortranEvaluate
+ FortranCommon
FortranSemantics
)
llvm_update_compile_flags(real.test)
>From ec8a23592452512b9091cd52416cb8fd0c4add2e Mon Sep 17 00:00:00 2001
From: Michael Kruse <llvm-project at meinersbur.de>
Date: Thu, 9 Jan 2025 03:13:50 +0100
Subject: [PATCH 3/4] Keep identity of FortranDecimal
---
.../{Common => Decimal}/binary-floating-point.h | 8 ++++----
flang/include/flang/{Common => Decimal}/decimal.h | 11 ++++++-----
flang/lib/CMakeLists.txt | 1 +
flang/lib/Common/CMakeLists.txt | 2 --
flang/lib/Decimal/CMakeLists.txt | 12 ++++++++++++
.../{Common => Decimal}/big-radix-floating-point.h | 12 ++++++------
flang/lib/{Common => Decimal}/binary-to-decimal.cpp | 4 ++--
flang/lib/{Common => Decimal}/decimal-to-binary.cpp | 6 +++---
flang/lib/Evaluate/CMakeLists.txt | 1 +
flang/lib/Evaluate/real.cpp | 2 +-
flang/runtime/CMakeLists.txt | 4 ++--
flang/runtime/edit-input.h | 2 +-
flang/runtime/edit-output.h | 2 +-
flang/runtime/environment.h | 2 +-
flang/runtime/format-implementation.h | 2 +-
flang/runtime/format.h | 2 +-
flang/test/CMakeLists.txt | 1 +
flang/unittests/Decimal/CMakeLists.txt | 4 ++--
flang/unittests/Decimal/quick-sanity-test.cpp | 2 +-
flang/unittests/Decimal/thorough-test.cpp | 2 +-
flang/unittests/Evaluate/CMakeLists.txt | 3 ++-
21 files changed, 50 insertions(+), 35 deletions(-)
rename flang/include/flang/{Common => Decimal}/binary-floating-point.h (96%)
rename flang/include/flang/{Common => Decimal}/decimal.h (95%)
create mode 100644 flang/lib/Decimal/CMakeLists.txt
rename flang/lib/{Common => Decimal}/big-radix-floating-point.h (97%)
rename flang/lib/{Common => Decimal}/binary-to-decimal.cpp (99%)
rename flang/lib/{Common => Decimal}/decimal-to-binary.cpp (99%)
diff --git a/flang/include/flang/Common/binary-floating-point.h b/flang/include/flang/Decimal/binary-floating-point.h
similarity index 96%
rename from flang/include/flang/Common/binary-floating-point.h
rename to flang/include/flang/Decimal/binary-floating-point.h
index 705acc31bdfb21..1e0cde97d98e61 100644
--- a/flang/include/flang/Common/binary-floating-point.h
+++ b/flang/include/flang/Decimal/binary-floating-point.h
@@ -1,4 +1,4 @@
-//===-- include/flang/Common/binary-floating-point.h ------------*- C++ -*-===//
+//===-- include/flang/Decimal/binary-floating-point.h -----------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
@@ -6,8 +6,8 @@
//
//===----------------------------------------------------------------------===//
-#ifndef FORTRAN_COMMON_BINARY_FLOATING_POINT_H_
-#define FORTRAN_COMMON_BINARY_FLOATING_POINT_H_
+#ifndef FORTRAN_DECIMAL_BINARY_FLOATING_POINT_H_
+#define FORTRAN_DECIMAL_BINARY_FLOATING_POINT_H_
// Access and manipulate the fields of an IEEE-754 binary
// floating-point value via a generalized template.
@@ -208,4 +208,4 @@ template <int BINARY_PRECISION> class BinaryFloatingPointNumber {
RawType raw_{0};
};
} // namespace Fortran::decimal
-#endif /* FORTRAN_COMMON_BINARY_FLOATING_POINT_H_ */
+#endif
diff --git a/flang/include/flang/Common/decimal.h b/flang/include/flang/Decimal/decimal.h
similarity index 95%
rename from flang/include/flang/Common/decimal.h
rename to flang/include/flang/Decimal/decimal.h
index c086f97129f6a5..443163d058e28b 100644
--- a/flang/include/flang/Common/decimal.h
+++ b/flang/include/flang/Decimal/decimal.h
@@ -1,15 +1,16 @@
-/*===-- include/flang/Common/decimal.h ------------------------------*- C -*-===
+/*===-- include/flang/Decimal/decimal.h ---------------------------*- C++ -*-===
*
* Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
* See https://llvm.org/LICENSE.txt for license information.
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
*
- *===----------------------------------------------------------------------===*/
+ * ===-----------------------------------------------------------------------===
+ */
/* C and C++ API for binary-to/from-decimal conversion package. */
-#ifndef FORTRAN_COMMON_DECIMAL_H_
-#define FORTRAN_COMMON_DECIMAL_H_
+#ifndef FORTRAN_DECIMAL_DECIMAL_H_
+#define FORTRAN_DECIMAL_DECIMAL_H_
#include "flang/Common/api-attrs.h"
#include <stddef.h>
@@ -136,4 +137,4 @@ RT_API_ATTRS enum NS(ConversionResultFlags) ConvertDecimalToLongDouble(
#ifdef __cplusplus
} // extern "C"
#endif
-#endif /* FORTRAN_COMMON_DECIMAL_H_ */
+#endif
diff --git a/flang/lib/CMakeLists.txt b/flang/lib/CMakeLists.txt
index e5a5e504ec1a4e..f41d4df1f07e3c 100644
--- a/flang/lib/CMakeLists.txt
+++ b/flang/lib/CMakeLists.txt
@@ -1,5 +1,6 @@
add_subdirectory(Common)
add_subdirectory(Evaluate)
+add_subdirectory(Decimal)
add_subdirectory(Lower)
add_subdirectory(Parser)
add_subdirectory(Semantics)
diff --git a/flang/lib/Common/CMakeLists.txt b/flang/lib/Common/CMakeLists.txt
index 3e5f0b13af8881..de6bea396f3cbe 100644
--- a/flang/lib/Common/CMakeLists.txt
+++ b/flang/lib/Common/CMakeLists.txt
@@ -35,8 +35,6 @@ if(FLANG_VENDOR)
endif()
add_flang_library(FortranCommon
- binary-to-decimal.cpp
- decimal-to-binary.cpp
Fortran.cpp
Fortran-features.cpp
default-kinds.cpp
diff --git a/flang/lib/Decimal/CMakeLists.txt b/flang/lib/Decimal/CMakeLists.txt
new file mode 100644
index 00000000000000..477d44e0565ebe
--- /dev/null
+++ b/flang/lib/Decimal/CMakeLists.txt
@@ -0,0 +1,12 @@
+#===-- lib/Decimal/CMakeLists.txt ------------------------------------------===#
+#
+# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+# See https://llvm.org/LICENSE.txt for license information.
+# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+#
+#===------------------------------------------------------------------------===#
+
+add_flang_library(FortranDecimal
+ binary-to-decimal.cpp
+ decimal-to-binary.cpp
+)
diff --git a/flang/lib/Common/big-radix-floating-point.h b/flang/lib/Decimal/big-radix-floating-point.h
similarity index 97%
rename from flang/lib/Common/big-radix-floating-point.h
rename to flang/lib/Decimal/big-radix-floating-point.h
index 6d247f3796eea5..f9afebf5b3d703 100644
--- a/flang/lib/Common/big-radix-floating-point.h
+++ b/flang/lib/Decimal/big-radix-floating-point.h
@@ -1,4 +1,4 @@
-//===-- lib/Common/big-radix-floating-point.h -------------------*- C++ -*-===//
+//===-- lib/Decimal/big-radix-floating-point.h ------------------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
@@ -6,8 +6,8 @@
//
//===----------------------------------------------------------------------===//
-#ifndef FORTRAN_COMMON_BIG_RADIX_FLOATING_POINT_H_
-#define FORTRAN_COMMON_BIG_RADIX_FLOATING_POINT_H_
+#ifndef FORTRAN_DECIMAL_BIG_RADIX_FLOATING_POINT_H_
+#define FORTRAN_DECIMAL_BIG_RADIX_FLOATING_POINT_H_
// This is a helper class for use in floating-point conversions between
// binary and decimal representations. It holds a multiple-precision
@@ -21,11 +21,11 @@
// for conversions between binary and decimal representations; it is not
// a general-purpose facility.
-#include "flang/Common/binary-floating-point.h"
#include "flang/Common/bit-population-count.h"
-#include "flang/Common/decimal.h"
#include "flang/Common/leading-zero-bit-count.h"
#include "flang/Common/uint128.h"
+#include "flang/Decimal/binary-floating-point.h"
+#include "flang/Decimal/decimal.h"
#include <cinttypes>
#include <limits>
#include <type_traits>
@@ -393,4 +393,4 @@ template <int PREC, int LOG10RADIX = 16> class BigRadixFloatingPointNumber {
enum FortranRounding rounding_ { RoundNearest };
};
} // namespace Fortran::decimal
-#endif /* FORTRAN_COMMON_BIG_RADIX_FLOATING_POINT_H_ */
+#endif
diff --git a/flang/lib/Common/binary-to-decimal.cpp b/flang/lib/Decimal/binary-to-decimal.cpp
similarity index 99%
rename from flang/lib/Common/binary-to-decimal.cpp
rename to flang/lib/Decimal/binary-to-decimal.cpp
index fb2caefdae8fa1..b64865e95df24d 100644
--- a/flang/lib/Common/binary-to-decimal.cpp
+++ b/flang/lib/Decimal/binary-to-decimal.cpp
@@ -1,4 +1,4 @@
-//===-- lib/Common/binary-to-decimal.cpp ------------------------*- C++ -*-===//
+//===-- lib/Decimal/binary-to-decimal.cpp ---------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
@@ -7,7 +7,7 @@
//===----------------------------------------------------------------------===//
#include "big-radix-floating-point.h"
-#include "flang/Common/decimal.h"
+#include "flang/Decimal/decimal.h"
#include <cassert>
#include <cfloat>
#include <string>
diff --git a/flang/lib/Common/decimal-to-binary.cpp b/flang/lib/Decimal/decimal-to-binary.cpp
similarity index 99%
rename from flang/lib/Common/decimal-to-binary.cpp
rename to flang/lib/Decimal/decimal-to-binary.cpp
index cbf1664e9c240d..94c51774237399 100644
--- a/flang/lib/Common/decimal-to-binary.cpp
+++ b/flang/lib/Decimal/decimal-to-binary.cpp
@@ -1,4 +1,4 @@
-//===-- lib/Common/decimal-to-binary.cpp ------------------------*- C++ -*-===//
+//===-- lib/Decimal/decimal-to-binary.cpp ---------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
@@ -7,10 +7,10 @@
//===----------------------------------------------------------------------===//
#include "big-radix-floating-point.h"
-#include "flang/Common/binary-floating-point.h"
#include "flang/Common/bit-population-count.h"
-#include "flang/Common/decimal.h"
#include "flang/Common/leading-zero-bit-count.h"
+#include "flang/Decimal/binary-floating-point.h"
+#include "flang/Decimal/decimal.h"
#include "flang/Runtime/freestanding-tools.h"
#include <cinttypes>
#include <cstring>
diff --git a/flang/lib/Evaluate/CMakeLists.txt b/flang/lib/Evaluate/CMakeLists.txt
index ebdc55cff91c43..b38f450d746ea7 100644
--- a/flang/lib/Evaluate/CMakeLists.txt
+++ b/flang/lib/Evaluate/CMakeLists.txt
@@ -61,6 +61,7 @@ add_flang_library(FortranEvaluate
LINK_LIBS
FortranCommon
+ FortranDecimal
FortranParser
${LIBPGMATH}
${QUADMATHLIB}
diff --git a/flang/lib/Evaluate/real.cpp b/flang/lib/Evaluate/real.cpp
index 4c78a0ab658e0e..2c0f2833f07dc5 100644
--- a/flang/lib/Evaluate/real.cpp
+++ b/flang/lib/Evaluate/real.cpp
@@ -8,8 +8,8 @@
#include "flang/Evaluate/real.h"
#include "int-power.h"
-#include "flang/Common/decimal.h"
#include "flang/Common/idioms.h"
+#include "flang/Decimal/decimal.h"
#include "flang/Parser/characters.h"
#include "llvm/Support/raw_ostream.h"
#include <limits>
diff --git a/flang/runtime/CMakeLists.txt b/flang/runtime/CMakeLists.txt
index 8e74467aa399eb..6343c4276f0e3e 100644
--- a/flang/runtime/CMakeLists.txt
+++ b/flang/runtime/CMakeLists.txt
@@ -111,8 +111,8 @@ add_definitions(-U_LIBCPP_ENABLE_ASSERTIONS)
add_subdirectory(Float128Math)
set(sources
- ${FLANG_SOURCE_DIR}/lib/Common/binary-to-decimal.cpp
- ${FLANG_SOURCE_DIR}/lib/Common/decimal-to-binary.cpp
+ ${FLANG_SOURCE_DIR}/lib/Decimal/binary-to-decimal.cpp
+ ${FLANG_SOURCE_DIR}/lib/Decimal/decimal-to-binary.cpp
ISO_Fortran_binding.cpp
allocator-registry.cpp
allocatable.cpp
diff --git a/flang/runtime/edit-input.h b/flang/runtime/edit-input.h
index 50d1db6e024053..55a7a455781719 100644
--- a/flang/runtime/edit-input.h
+++ b/flang/runtime/edit-input.h
@@ -11,7 +11,7 @@
#include "format.h"
#include "io-stmt.h"
-#include "flang/Common/decimal.h"
+#include "flang/Decimal/decimal.h"
namespace Fortran::runtime::io {
diff --git a/flang/runtime/edit-output.h b/flang/runtime/edit-output.h
index 6ae49265b64df5..42cc993f98cc1c 100644
--- a/flang/runtime/edit-output.h
+++ b/flang/runtime/edit-output.h
@@ -20,8 +20,8 @@
#include "format.h"
#include "io-stmt.h"
-#include "flang/Common/decimal.h"
#include "flang/Common/uint128.h"
+#include "flang/Decimal/decimal.h"
namespace Fortran::runtime::io {
diff --git a/flang/runtime/environment.h b/flang/runtime/environment.h
index 90aa1e8dd28d77..b8b9f10e4e57f5 100644
--- a/flang/runtime/environment.h
+++ b/flang/runtime/environment.h
@@ -9,8 +9,8 @@
#ifndef FORTRAN_RUNTIME_ENVIRONMENT_H_
#define FORTRAN_RUNTIME_ENVIRONMENT_H_
-#include "flang/Common/decimal.h"
#include "flang/Common/optional.h"
+#include "flang/Decimal/decimal.h"
struct EnvironmentDefaultList;
diff --git a/flang/runtime/format-implementation.h b/flang/runtime/format-implementation.h
index 1dd526ce897aea..46204ca927c135 100644
--- a/flang/runtime/format-implementation.h
+++ b/flang/runtime/format-implementation.h
@@ -15,8 +15,8 @@
#include "format.h"
#include "io-stmt.h"
#include "memory.h"
-#include "flang/Common/decimal.h"
#include "flang/Common/format.h"
+#include "flang/Decimal/decimal.h"
#include "flang/Runtime/main.h"
#include <algorithm>
#include <cstring>
diff --git a/flang/runtime/format.h b/flang/runtime/format.h
index 8362c7233b688f..815bf70685e647 100644
--- a/flang/runtime/format.h
+++ b/flang/runtime/format.h
@@ -14,8 +14,8 @@
#include "environment.h"
#include "io-error.h"
#include "flang/Common/Fortran-consts.h"
-#include "flang/Common/decimal.h"
#include "flang/Common/optional.h"
+#include "flang/Decimal/decimal.h"
#include "flang/Runtime/freestanding-tools.h"
#include <cinttypes>
diff --git a/flang/test/CMakeLists.txt b/flang/test/CMakeLists.txt
index e38c9b50259376..cab214c2ef4c8c 100644
--- a/flang/test/CMakeLists.txt
+++ b/flang/test/CMakeLists.txt
@@ -72,6 +72,7 @@ set(FLANG_TEST_DEPENDS
llvm-readobj
split-file
FortranRuntime
+ FortranDecimal
)
if (LLVM_ENABLE_PLUGINS AND NOT WIN32)
list(APPEND FLANG_TEST_DEPENDS Bye)
diff --git a/flang/unittests/Decimal/CMakeLists.txt b/flang/unittests/Decimal/CMakeLists.txt
index 02bf1b0d7e13d3..d301a9d3628c56 100644
--- a/flang/unittests/Decimal/CMakeLists.txt
+++ b/flang/unittests/Decimal/CMakeLists.txt
@@ -1,10 +1,10 @@
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
add_flang_nongtest_unittest(quick-sanity-test
- FortranCommon
+ FortranDecimal
)
# This test is not run by default as it takes a long time to execute.
add_flang_nongtest_unittest(thorough-test
SLOW_TEST
- FortranCommon
+ FortranDecimal
)
diff --git a/flang/unittests/Decimal/quick-sanity-test.cpp b/flang/unittests/Decimal/quick-sanity-test.cpp
index c36c73b817e1f9..dafb075307ab6a 100644
--- a/flang/unittests/Decimal/quick-sanity-test.cpp
+++ b/flang/unittests/Decimal/quick-sanity-test.cpp
@@ -1,4 +1,4 @@
-#include "flang/Common/decimal.h"
+#include "flang/Decimal/decimal.h"
#include "llvm/Support/raw_ostream.h"
#include <cinttypes>
#include <cstdio>
diff --git a/flang/unittests/Decimal/thorough-test.cpp b/flang/unittests/Decimal/thorough-test.cpp
index 0f7a2d4b33e764..46951f33eb8fee 100644
--- a/flang/unittests/Decimal/thorough-test.cpp
+++ b/flang/unittests/Decimal/thorough-test.cpp
@@ -1,4 +1,4 @@
-#include "flang/Common/decimal.h"
+#include "flang/Decimal/decimal.h"
#include "llvm/Support/raw_ostream.h"
#include <cinttypes>
#include <cstdio>
diff --git a/flang/unittests/Evaluate/CMakeLists.txt b/flang/unittests/Evaluate/CMakeLists.txt
index 210a397e46b675..52eb385f4763fb 100644
--- a/flang/unittests/Evaluate/CMakeLists.txt
+++ b/flang/unittests/Evaluate/CMakeLists.txt
@@ -43,6 +43,7 @@ add_flang_nongtest_unittest(intrinsics
FortranCommon
FortranEvaluateTesting
FortranEvaluate
+ FortranDecimal
FortranSemantics
FortranParser
FortranRuntime
@@ -63,7 +64,7 @@ set(LLVM_REQUIRES_RTTI ON)
add_flang_nongtest_unittest(real
FortranEvaluateTesting
FortranEvaluate
- FortranCommon
+ FortranDecimal
FortranSemantics
)
llvm_update_compile_flags(real.test)
>From 17ee1828cde1ca51d654ab8ae770250e16478580 Mon Sep 17 00:00:00 2001
From: Michael Kruse <llvm-project at meinersbur.de>
Date: Sat, 11 Jan 2025 22:16:53 +0100
Subject: [PATCH 4/4] Fix typo
---
flang/docs/FlangDriver.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/flang/docs/FlangDriver.md b/flang/docs/FlangDriver.md
index 8131e6ffd514dc..be5633529f50cd 100644
--- a/flang/docs/FlangDriver.md
+++ b/flang/docs/FlangDriver.md
@@ -185,7 +185,7 @@ The automatically added libraries are:
If the code is C/C++ based and invokes Fortran routines, one can either use Clang
or Flang as the linker driver. If Clang is used, it will automatically all
required runtime libraries needed by C++ (e.g., for STL) to the linker invocation.
-In this case, one has to explicitly provide the Fortran runtime libraries
+In this case, one has to explicitly provide the Fortran runtime library
`FortranRuntime`. An alternative is to use Flang to link.
In this case, it may be required to explicitly supply C++ runtime libraries.
More information about the llvm-commits
mailing list