diff options
author | Slava Zakharin <szakharin@nvidia.com> | 2024-04-29 08:19:45 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-29 08:19:45 -0700 |
commit | 1563a8752b33a854c3ab5a4e8b3dce39ac9831b8 (patch) | |
tree | 4c46d26a60c8da1c8508125727fa917e26099d54 | |
parent | 3ba079183f82191d8b6a26dedfebc4a031a3fb6d (diff) | |
download | llvm-1563a8752b33a854c3ab5a4e8b3dce39ac9831b8.zip llvm-1563a8752b33a854c3ab5a4e8b3dce39ac9831b8.tar.gz llvm-1563a8752b33a854c3ab5a4e8b3dce39ac9831b8.tar.bz2 |
[flang][runtime] Allow building CUDA PTX library without global vars definitions. (#90280)
-rw-r--r-- | flang/cmake/modules/AddFlangOffloadRuntime.cmake | 9 | ||||
-rw-r--r-- | flang/runtime/environment.cpp | 2 | ||||
-rw-r--r-- | flang/runtime/unit.cpp | 2 | ||||
-rw-r--r-- | flang/runtime/utf.cpp | 2 |
4 files changed, 15 insertions, 0 deletions
diff --git a/flang/cmake/modules/AddFlangOffloadRuntime.cmake b/flang/cmake/modules/AddFlangOffloadRuntime.cmake index e34d385..0af12c8 100644 --- a/flang/cmake/modules/AddFlangOffloadRuntime.cmake +++ b/flang/cmake/modules/AddFlangOffloadRuntime.cmake @@ -2,6 +2,10 @@ option(FLANG_EXPERIMENTAL_CUDA_RUNTIME "Compile Fortran runtime as CUDA sources (experimental)" OFF ) +option(FLANG_CUDA_RUNTIME_PTX_WITHOUT_GLOBAL_VARS + "Do not compile global variables' definitions when producing PTX library" OFF + ) + set(FLANG_LIBCUDACXX_PATH "" CACHE PATH "Path to libcu++ package installation") set(FLANG_EXPERIMENTAL_OMP_OFFLOAD_BUILD "off" CACHE STRING @@ -56,6 +60,11 @@ macro(enable_cuda_compilation name files) # Add an OBJECT library consisting of CUDA PTX. llvm_add_library(${name}PTX OBJECT PARTIAL_SOURCES_INTENDED ${files}) set_property(TARGET obj.${name}PTX PROPERTY CUDA_PTX_COMPILATION ON) + if (FLANG_CUDA_RUNTIME_PTX_WITHOUT_GLOBAL_VARS) + target_compile_definitions(obj.${name}PTX + PRIVATE FLANG_RUNTIME_NO_GLOBAL_VAR_DEFS + ) + endif() endif() endmacro() diff --git a/flang/runtime/environment.cpp b/flang/runtime/environment.cpp index b2c9665..52b1d99 100644 --- a/flang/runtime/environment.cpp +++ b/flang/runtime/environment.cpp @@ -23,9 +23,11 @@ extern char **environ; namespace Fortran::runtime { +#ifndef FLANG_RUNTIME_NO_GLOBAL_VAR_DEFS RT_OFFLOAD_VAR_GROUP_BEGIN RT_VAR_ATTRS ExecutionEnvironment executionEnvironment; RT_OFFLOAD_VAR_GROUP_END +#endif // FLANG_RUNTIME_NO_GLOBAL_VAR_DEFS static void SetEnvironmentDefaults(const EnvironmentDefaultList *envDefaults) { if (!envDefaults) { diff --git a/flang/runtime/unit.cpp b/flang/runtime/unit.cpp index 0e38cff..3b42f45 100644 --- a/flang/runtime/unit.cpp +++ b/flang/runtime/unit.cpp @@ -19,11 +19,13 @@ namespace Fortran::runtime::io { +#ifndef FLANG_RUNTIME_NO_GLOBAL_VAR_DEFS RT_OFFLOAD_VAR_GROUP_BEGIN RT_VAR_ATTRS ExternalFileUnit *defaultInput{nullptr}; // unit 5 RT_VAR_ATTRS ExternalFileUnit *defaultOutput{nullptr}; // unit 6 RT_VAR_ATTRS ExternalFileUnit *errorOutput{nullptr}; // unit 0 extension RT_OFFLOAD_VAR_GROUP_END +#endif // FLANG_RUNTIME_NO_GLOBAL_VAR_DEFS RT_OFFLOAD_API_GROUP_BEGIN diff --git a/flang/runtime/utf.cpp b/flang/runtime/utf.cpp index 9945dc6..f4b38d5 100644 --- a/flang/runtime/utf.cpp +++ b/flang/runtime/utf.cpp @@ -10,6 +10,7 @@ namespace Fortran::runtime { +#ifndef FLANG_RUNTIME_NO_GLOBAL_VAR_DEFS // clang-format off RT_OFFLOAD_VAR_GROUP_BEGIN const RT_CONST_VAR_ATTRS std::uint8_t UTF8FirstByteTable[256]{ @@ -40,6 +41,7 @@ const RT_CONST_VAR_ATTRS std::uint8_t UTF8FirstByteTable[256]{ }; RT_OFFLOAD_VAR_GROUP_END // clang-format on +#endif // FLANG_RUNTIME_NO_GLOBAL_VAR_DEFS RT_OFFLOAD_API_GROUP_BEGIN // Non-minimal encodings are accepted. |