diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp index 699aadec86dcb..e0b5d003ebb13 100644 --- a/clang/lib/Driver/ToolChains/CommonArgs.cpp +++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -1321,7 +1321,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. @@ -1338,7 +1338,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); // needs libexecinfo for backtrace functions diff --git a/clang/lib/Driver/ToolChains/Flang.cpp b/clang/lib/Driver/ToolChains/Flang.cpp index e4019c4349687..e7b68f4a8c60a 100644 --- a/clang/lib/Driver/ToolChains/Flang.cpp +++ b/clang/lib/Driver/ToolChains/Flang.cpp @@ -365,21 +365,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"); @@ -387,7 +384,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 309c5e2024dd8..5f960a954783d 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. +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. On Darwin, the logical root where the system libraries are located (sysroot) diff --git a/flang/lib/Decimal/CMakeLists.txt b/flang/lib/Decimal/CMakeLists.txt index 2fd2a429d7c22..477d44e0565eb 100644 --- a/flang/lib/Decimal/CMakeLists.txt +++ b/flang/lib/Decimal/CMakeLists.txt @@ -6,89 +6,7 @@ # #===------------------------------------------------------------------------===# -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 +add_flang_library(FortranDecimal 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/runtime/CMakeLists.txt b/flang/runtime/CMakeLists.txt index bf27a121e4d17..3587ec078c47f 100644 --- a/flang/runtime/CMakeLists.txt +++ b/flang/runtime/CMakeLists.txt @@ -59,7 +59,7 @@ if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) ) endif() -set(linked_libraries FortranDecimal) +set(linked_libraries "") # function checks find_package(Backtrace) @@ -116,6 +116,8 @@ add_definitions(-U_LIBCPP_ENABLE_ASSERTIONS) add_subdirectory(Float128Math) set(sources + ${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 @@ -288,26 +290,18 @@ else() ) 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/test/Driver/linker-flags.f90 b/flang/test/Driver/linker-flags.f90 index b998cbaa6227c..16bd4c3ba8371 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" ! BSD-LABEL: "{{.*}}ld{{(\.exe)?}}" @@ -41,7 +41,6 @@ ! BSD-F128NONE-NOT: FortranFloat128Math ! BSD-F128LIBQUADMATH-SAME: "-lFortranFloat128Math" "--as-needed" "-lquadmath" "--no-as-needed" ! BSD-SAME: -lFortranRuntime -! BSD-SAME: -lFortranDecimal ! BSD-SAME: -lexecinfo ! DARWIN-LABEL: "{{.*}}ld{{(\.exe)?}}" @@ -49,20 +48,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 765917f07d8e7..befe61fdadcd1 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 cd707e632a45f..ab7c675fe7b77 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 606a5d189f719..b1a5fa004014c 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 f43234fb125b7..c452b6d231c89 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/lld/COFF/MinGW.cpp b/lld/COFF/MinGW.cpp index a6407bc279200..8f1c1ebcc3f13 100644 --- a/lld/COFF/MinGW.cpp +++ b/lld/COFF/MinGW.cpp @@ -50,7 +50,6 @@ AutoExporter::AutoExporter( "libc++", "libc++abi", "libFortranRuntime", - "libFortranDecimal", "libunwind", "libmsvcrt", "libucrtbase",