Skip to content

Commit f231599

Browse files
committed
[libc] Don't use Clang flags on other compilers
This is necessary to get llvm-libc compile with GCC. This patch is extracted from D119002. Differential Revision: https://reviews.llvm.org/D119143
1 parent af7b4df commit f231599

File tree

1 file changed

+18
-10
lines changed

1 file changed

+18
-10
lines changed

libc/src/string/CMakeLists.txt

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -251,14 +251,23 @@ function(add_implementation name impl_name)
251251
"ADD_IMPL"
252252
"" # Optional arguments
253253
"" # Single value arguments
254-
"REQUIRE;SRCS;HDRS;DEPENDS;COMPILE_OPTIONS" # Multi value arguments
254+
"REQUIRE;SRCS;HDRS;DEPENDS;COMPILE_OPTIONS;MLLVM_COMPILE_OPTIONS" # Multi value arguments
255255
${ARGN})
256+
257+
if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
258+
list(APPEND ADD_IMPL_MLLVM_COMPILE_OPTIONS "-combiner-global-alias-analysis")
259+
# Note that '-mllvm' needs to be prefixed with 'SHELL:' to prevent CMake flag deduplication.
260+
foreach(opt IN LISTS ADD_IMPL_MLLVM_COMPILE_OPTIONS)
261+
list(APPEND ADD_IMPL_COMPILE_OPTIONS "SHELL:-mllvm ${opt}")
262+
endforeach()
263+
endif()
264+
256265
add_entrypoint_object(${impl_name}
257266
NAME ${name}
258267
SRCS ${ADD_IMPL_SRCS}
259268
HDRS ${ADD_IMPL_HDRS}
260269
DEPENDS ${ADD_IMPL_DEPENDS}
261-
COMPILE_OPTIONS ${ADD_IMPL_COMPILE_OPTIONS} "SHELL:-mllvm -combiner-global-alias-analysis"
270+
COMPILE_OPTIONS ${ADD_IMPL_COMPILE_OPTIONS}
262271
)
263272
get_fq_target_name(${impl_name} fq_target_name)
264273
set_target_properties(${fq_target_name} PROPERTIES REQUIRE_CPU_FEATURES "${ADD_IMPL_REQUIRE}")
@@ -382,10 +391,9 @@ if(${LIBC_TARGET_ARCHITECTURE_IS_X86})
382391
add_memcpy(memcpy)
383392
elseif(${LIBC_TARGET_ARCHITECTURE_IS_AARCH64})
384393
# Disable tail merging as it leads to lower performance.
385-
# Note that '-mllvm' needs to be prefixed with 'SHELL:' to prevent CMake flag deduplication.
386394
add_memcpy(memcpy_opt_host COMPILE_OPTIONS ${LIBC_COMPILE_OPTIONS_NATIVE}
387-
COMPILE_OPTIONS "SHELL:-mllvm --tail-merge-threshold=0")
388-
add_memcpy(memcpy COMPILE_OPTIONS "SHELL:-mllvm --tail-merge-threshold=0")
395+
MLLVM_COMPILE_OPTIONS "-tail-merge-threshold=0")
396+
add_memcpy(memcpy MLLVM_COMPILE_OPTIONS "-tail-merge-threshold=0")
389397
else()
390398
add_memcpy(memcpy_opt_host COMPILE_OPTIONS ${LIBC_COMPILE_OPTIONS_NATIVE})
391399
add_memcpy(memcpy)
@@ -418,10 +426,9 @@ if(${LIBC_TARGET_ARCHITECTURE_IS_X86})
418426
add_memmove(memmove)
419427
elseif(${LIBC_TARGET_ARCHITECTURE_IS_AARCH64})
420428
# Disable tail merging as it leads to lower performance.
421-
# Note that '-mllvm' needs to be prefixed with 'SHELL:' to prevent CMake flag deduplication.
422429
add_memmove(memmove_opt_host COMPILE_OPTIONS ${LIBC_COMPILE_OPTIONS_NATIVE}
423-
COMPILE_OPTIONS "SHELL:-mllvm --tail-merge-threshold=0")
424-
add_memmove(memmove COMPILE_OPTIONS "SHELL:-mllvm --tail-merge-threshold=0")
430+
MLLVM_COMPILE_OPTIONS "-tail-merge-threshold=0")
431+
add_memmove(memmove MLLVM_COMPILE_OPTIONS "-tail-merge-threshold=0")
425432
else()
426433
add_memmove(memmove_opt_host COMPILE_OPTIONS ${LIBC_COMPILE_OPTIONS_NATIVE})
427434
add_memmove(memmove)
@@ -452,9 +459,10 @@ if(${LIBC_TARGET_ARCHITECTURE_IS_X86})
452459
add_memset(memset_opt_host COMPILE_OPTIONS ${LIBC_COMPILE_OPTIONS_NATIVE})
453460
add_memset(memset)
454461
elseif(${LIBC_TARGET_ARCHITECTURE_IS_AARCH64})
462+
# Disable tail merging as it leads to lower performance.
455463
add_memset(memset_opt_host COMPILE_OPTIONS ${LIBC_COMPILE_OPTIONS_NATIVE}
456-
COMPILE_OPTIONS "SHELL:-mllvm --tail-merge-threshold=0")
457-
add_memset(memset COMPILE_OPTIONS "SHELL:-mllvm --tail-merge-threshold=0")
464+
MLLVM_COMPILE_OPTIONS "-tail-merge-threshold=0")
465+
add_memset(memset MLLVM_COMPILE_OPTIONS "-tail-merge-threshold=0")
458466
else()
459467
add_memset(memset_opt_host COMPILE_OPTIONS ${LIBC_COMPILE_OPTIONS_NATIVE})
460468
add_memset(memset)

0 commit comments

Comments
 (0)