[libclc] [libclc] link_bc target should depends on target builtins.link.clc-arch_suffix (PR #132338)
Wenju He via cfe-commits
cfe-commits at lists.llvm.org
Fri Mar 21 01:42:50 PDT 2025
https://github.com/wenju-he updated https://github.com/llvm/llvm-project/pull/132338
>From 6ce54aa767f8cdff2f938cdce8656e495a1346f0 Mon Sep 17 00:00:00 2001
From: Wenju He <wenju.he at intel.com>
Date: Thu, 20 Mar 2025 22:01:55 -0700
Subject: [PATCH 1/2] [libclc] link_bc target should depends on target
builtins.link.clc-arch_suffix
Currently link_bc command depends on the bitcode file that is associated
with custom target builtins.link.clc-arch_suffix.
On windows we randomly see following error:
`
Generating builtins.link.clc-${ARCH}--.bc
Generating builtins.link.libspirv-${ARCH}.bc
error : The requested operation cannot be performed on a file with a user-mapped section open.
`
I suspect that builtins.link.clc-${ARCH}--.bc file is being generated
while it is being used in link_bc.
This PR adds target-level dependency to ensure builtins.link.clc-${ARCH}--.bc
is generated first.
---
libclc/CMakeLists.txt | 2 +-
libclc/cmake/modules/AddLibclc.cmake | 9 +++++----
2 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/libclc/CMakeLists.txt b/libclc/CMakeLists.txt
index 426f210a73fcc..3de7ee9b707a8 100644
--- a/libclc/CMakeLists.txt
+++ b/libclc/CMakeLists.txt
@@ -413,7 +413,7 @@ foreach( t ${LIBCLC_TARGETS_TO_BUILD} )
GEN_FILES ${opencl_gen_files}
ALIASES ${${d}_aliases}
# Link in the CLC builtins and internalize their symbols
- INTERNAL_LINK_DEPENDENCIES $<TARGET_PROPERTY:builtins.link.clc-${arch_suffix},TARGET_FILE>
+ INTERNAL_LINK_DEPENDENCIES builtins.link.clc-${arch_suffix}
)
endforeach( d )
endforeach( t )
diff --git a/libclc/cmake/modules/AddLibclc.cmake b/libclc/cmake/modules/AddLibclc.cmake
index 911559ff4bfa9..0808b39e06555 100644
--- a/libclc/cmake/modules/AddLibclc.cmake
+++ b/libclc/cmake/modules/AddLibclc.cmake
@@ -211,8 +211,9 @@ endfunction()
# * ALIASES <string> ...
# List of aliases
# * INTERNAL_LINK_DEPENDENCIES <string> ...
-# A list of extra bytecode files to link into the builtin library. Symbols
-# from these link dependencies will be internalized during linking.
+# A list of extra bytecode file's targets. The bitcode files will be linked
+# into the builtin library. Symbols from these link dependencies will be
+# internalized during linking.
function(add_libclc_builtin_set)
cmake_parse_arguments(ARG
"CLC_INTERNAL"
@@ -313,8 +314,8 @@ function(add_libclc_builtin_set)
INTERNALIZE
TARGET ${builtins_link_lib_tgt}
INPUTS $<TARGET_PROPERTY:${builtins_link_lib_tmp_tgt},TARGET_FILE>
- ${ARG_INTERNAL_LINK_DEPENDENCIES}
- DEPENDENCIES ${builtins_link_lib_tmp_tgt}
+ $<TARGET_PROPERTY:${ARG_INTERNAL_LINK_DEPENDENCIES},TARGET_FILE>
+ DEPENDENCIES ${builtins_link_lib_tmp_tgt} ${ARG_INTERNAL_LINK_DEPENDENCIES}
)
endif()
>From 7b9a65f8dac3ab5e13fcabade3e9ed4d384c5b92 Mon Sep 17 00:00:00 2001
From: Wenju He <wenju.he at intel.com>
Date: Fri, 21 Mar 2025 01:29:51 -0700
Subject: [PATCH 2/2] update comment, fix files to link
---
libclc/cmake/modules/AddLibclc.cmake | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/libclc/cmake/modules/AddLibclc.cmake b/libclc/cmake/modules/AddLibclc.cmake
index 0808b39e06555..29d728494cd3e 100644
--- a/libclc/cmake/modules/AddLibclc.cmake
+++ b/libclc/cmake/modules/AddLibclc.cmake
@@ -210,7 +210,7 @@ endfunction()
# Optimization options (for opt)
# * ALIASES <string> ...
# List of aliases
-# * INTERNAL_LINK_DEPENDENCIES <string> ...
+# * INTERNAL_LINK_DEPENDENCIES <target> ...
# A list of extra bytecode file's targets. The bitcode files will be linked
# into the builtin library. Symbols from these link dependencies will be
# internalized during linking.
@@ -310,11 +310,15 @@ function(add_libclc_builtin_set)
INPUTS ${bytecode_files}
DEPENDENCIES ${builtins_comp_lib_tgt}
)
+ set( internal_link_depend_files )
+ foreach( tgt ${ARG_INTERNAL_LINK_DEPENDENCIES} )
+ list( APPEND internal_link_depend_files $<TARGET_PROPERTY:tgt,TARGET_FILE> )
+ endforeach()
link_bc(
INTERNALIZE
TARGET ${builtins_link_lib_tgt}
INPUTS $<TARGET_PROPERTY:${builtins_link_lib_tmp_tgt},TARGET_FILE>
- $<TARGET_PROPERTY:${ARG_INTERNAL_LINK_DEPENDENCIES},TARGET_FILE>
+ ${internal_link_depend_files}
DEPENDENCIES ${builtins_link_lib_tmp_tgt} ${ARG_INTERNAL_LINK_DEPENDENCIES}
)
endif()
More information about the cfe-commits
mailing list