Skip to content

Commit f32d34f

Browse files
jchlandaAaronBallmanpremanandraosteffenlarsen
authored
[SYCL][libclc] Remangler fixes (#7723)
@pvchupin I've fixed the issues you mentioned in #7220 (comment) (the last two commits): * shared libs build: e0f3a52 * windows mangling: b88627f The rest is as per #7220 Co-authored-by: Aaron Ballman <aaron@aaronballman.com> Co-authored-by: premanandrao <premanand.m.rao@intel.com> Co-authored-by: Steffen Larsen <steffen.larsen@intel.com>
1 parent f5fb759 commit f32d34f

File tree

4 files changed

+777
-455
lines changed

4 files changed

+777
-455
lines changed

libclc/cmake/modules/AddLibclc.cmake

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,9 @@ macro(add_libclc_builtin_set arch_suffix)
108108

109109
# Generate remangled variants if requested
110110
if( LIBCLC_GENERATE_REMANGLED_VARIANTS )
111+
set(dummy_in "${CMAKE_BINARY_DIR}/lib/clc/libclc_dummy_in.cc")
112+
add_custom_command( OUTPUT ${dummy_in}
113+
COMMAND ${CMAKE_COMMAND} -E touch ${dummy_in} )
111114
set(long_widths l32 l64)
112115
set(char_signedness signed unsigned)
113116
if( ${obj_suffix} STREQUAL "libspirv-nvptx64--nvidiacl.bc")
@@ -128,10 +131,11 @@ macro(add_libclc_builtin_set arch_suffix)
128131
-o "${builtins_remangle_path}"
129132
--long-width=${long_width}
130133
--char-signedness=${signedness}
131-
"$<TARGET_PROPERTY:prepare-${obj_suffix},TARGET_FILE>"
132-
DEPENDS "${builtins_obj_path}" "prepare-${obj_suffix}" libclc-remangler )
134+
--input-ir="$<TARGET_PROPERTY:prepare-${obj_suffix},TARGET_FILE>"
135+
${dummy_in}
136+
DEPENDS "${builtins_obj_path}" "prepare-${obj_suffix}" libclc-remangler ${dummy_in})
133137
add_custom_target( "remangled-${long_width}-${signedness}_char.${obj_suffix_mangled}" ALL
134-
DEPENDS "${builtins_remangle_path}" )
138+
DEPENDS "${builtins_remangle_path}" "${dummy_in}")
135139
set_target_properties("remangled-${long_width}-${signedness}_char.${obj_suffix_mangled}"
136140
PROPERTIES TARGET_FILE "${builtins_remangle_path}")
137141

libclc/test/CMakeLists.txt

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,27 @@ foreach( t ${LIBCLC_TARGET_TO_TEST} )
4343

4444
endforeach( d )
4545
endforeach( t )
46+
47+
if(LIBCLC_GENERATE_REMANGLED_VARIANTS)
48+
# Run remangler in test mode if generating remangled variants and make sure
49+
# it depends on check-libclc target.
50+
# Both `long_widths` and `char_signedness` are set in AddLibclc.cmake and can
51+
# be used here.
52+
foreach(long_width ${long_widths})
53+
foreach(signedness ${char_signedness})
54+
# In `-t` (TestRun) the remangler does not perform any substitutions, it
55+
# needs to make sure that the remangled name matches the original mangled
56+
# one.
57+
set (test_target_name "test-remangled-${long_width}-${signedness}_char")
58+
add_custom_target(${test_target_name}
59+
COMMAND libclc-remangler
60+
--long-width=${long_width}
61+
--char-signedness=${signedness}
62+
--input-ir="$<TARGET_PROPERTY:prepare-${obj_suffix},TARGET_FILE>"
63+
${dummy_in} -t -o -
64+
DEPENDS "${builtins_obj_path}" "prepare-${obj_suffix}" "${dummy_in}" libclc-remangler)
65+
66+
add_dependencies(check-libclc ${test_target_name})
67+
endforeach()
68+
endforeach()
69+
endif()

libclc/utils/libclc-remangler/CMakeLists.txt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,12 @@ target_include_directories(libclc-remangler PRIVATE
1414
${CMAKE_SOURCE_DIR}/../clang/include
1515
${CMAKE_BINARY_DIR}/tools/clang/include)
1616

17-
clang_target_link_libraries(libclc-remangler PRIVATE clangBasic)
17+
clang_target_link_libraries(libclc-remangler
18+
PRIVATE
19+
clangAST
20+
clangBasic
21+
clangFrontend
22+
clangTooling
23+
clangSerialization
24+
LLVMOption
25+
)

0 commit comments

Comments
 (0)