From: Guillaume Chatelet Date: Fri, 20 May 2022 14:37:17 +0000 (+0000) Subject: Revert "[libc] Apply no-builtin everywhere, remove unnecessary flags" X-Git-Tag: upstream/15.0.7~7132 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0443bfabe7ba0bc5365a34de14ab8d108d2f0cd0;p=platform%2Fupstream%2Fllvm.git Revert "[libc] Apply no-builtin everywhere, remove unnecessary flags" This reverts commit 94d6dd90576637fa0eb2c40ca92320ad4c1a6942. --- diff --git a/libc/cmake/modules/LLVMLibCObjectRules.cmake b/libc/cmake/modules/LLVMLibCObjectRules.cmake index 2544a64..8e2f489 100644 --- a/libc/cmake/modules/LLVMLibCObjectRules.cmake +++ b/libc/cmake/modules/LLVMLibCObjectRules.cmake @@ -3,7 +3,7 @@ set(OBJECT_LIBRARY_TARGET_TYPE "OBJECT_LIBRARY") function(_get_common_compile_options output_var) set(compile_options ${LLVM_CXX_STD_default} ${LIBC_COMPILE_OPTIONS_DEFAULT} ${ARGN}) if(NOT ${LIBC_TARGET_OS} STREQUAL "windows") - set(compile_options ${compile_options} -fpie -ffreestanding -fno-builtin) + set(compile_options ${compile_options} -fpie -ffreestanding) endif() if(LLVM_COMPILER_IS_GCC_COMPATIBLE) list(APPEND compile_options "-fno-exceptions") diff --git a/libc/src/string/CMakeLists.txt b/libc/src/string/CMakeLists.txt index 68962e2..c4f45e6 100644 --- a/libc/src/string/CMakeLists.txt +++ b/libc/src/string/CMakeLists.txt @@ -279,6 +279,7 @@ function(add_implementation name impl_name) ${ARGN}) if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") + list(APPEND ADD_IMPL_MLLVM_COMPILE_OPTIONS "-combiner-global-alias-analysis") # Note that '-mllvm' needs to be prefixed with 'SHELL:' to prevent CMake flag deduplication. foreach(opt IN LISTS ADD_IMPL_MLLVM_COMPILE_OPTIONS) list(APPEND ADD_IMPL_COMPILE_OPTIONS "SHELL:-mllvm ${opt}") @@ -308,6 +309,9 @@ function(add_bcmp bcmp_name) DEPENDS .memory_utils.memory_utils libc.include.string + COMPILE_OPTIONS + -fno-builtin-memcmp + -fno-builtin-bcmp ${ARGN} ) endfunction() @@ -335,6 +339,8 @@ function(add_bzero bzero_name) DEPENDS .memory_utils.memset_implementation libc.include.string + COMPILE_OPTIONS + -fno-builtin-bzero ${ARGN} ) endfunction() @@ -362,6 +368,8 @@ function(add_memcmp memcmp_name) DEPENDS .memory_utils.memcmp_implementation libc.include.string + COMPILE_OPTIONS + -fno-builtin-memcmp ${ARGN} ) endfunction() @@ -392,6 +400,8 @@ function(add_memcpy memcpy_name) DEPENDS .memory_utils.memcpy_implementation libc.include.string + COMPILE_OPTIONS + -fno-builtin-memcpy ${ARGN} ) endfunction() @@ -424,6 +434,8 @@ function(add_memmove memmove_name) DEPENDS .memory_utils.memory_utils libc.include.string + COMPILE_OPTIONS + -fno-builtin ${ARGN} ) endfunction() @@ -456,6 +468,8 @@ function(add_memset memset_name) DEPENDS .memory_utils.memset_implementation libc.include.string + COMPILE_OPTIONS + -fno-builtin-memset ${ARGN} ) endfunction() diff --git a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel index c23a6fe..5f13a26 100644 --- a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel +++ b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel @@ -85,10 +85,7 @@ cc_library( hdrs = [ "src/__support/CPP/UInt.h", ], - deps = [ - "__support_cpp_array", - ":libc_root", - ], + deps = [":libc_root","__support_cpp_array"], ) cc_library( @@ -96,10 +93,7 @@ cc_library( hdrs = [ "src/__support/CPP/TypeTraits.h", ], - deps = [ - "__support_cpp_uint", - ":libc_root", - ], + deps = [":libc_root","__support_cpp_uint"], ) cc_library( @@ -812,6 +806,12 @@ libc_function( name = "memcpy", srcs = ["src/string/memcpy.cpp"], hdrs = ["src/string/memcpy.h"], + copts = [ + "-fno-builtin-memcpy", + "-fno-builtin-memmove", + "-mllvm -combiner-global-alias-analysis", + "-mllvm --tail-merge-threshold=0", + ], features = no_sanitize_features, deps = [ ":__support_common", @@ -823,6 +823,10 @@ libc_function( name = "memset", srcs = ["src/string/memset.cpp"], hdrs = ["src/string/memset.h"], + copts = [ + "-fno-builtin-memset", + "-mllvm -combiner-global-alias-analysis", + ], features = no_sanitize_features, deps = [ ":__support_common", @@ -834,6 +838,10 @@ libc_function( name = "memmove", srcs = ["src/string/memmove.cpp"], hdrs = ["src/string/memmove.h"], + copts = [ + "-fno-builtin-memmove", + "-mllvm -combiner-global-alias-analysis", + ], features = no_sanitize_features, deps = [ ":__support_common", @@ -847,6 +855,10 @@ libc_function( name = "memcmp", srcs = ["src/string/memcmp.cpp"], hdrs = ["src/string/memcmp.h"], + copts = [ + "-fno-builtin-memcmp", + "-mllvm -combiner-global-alias-analysis", + ], features = no_sanitize_features, deps = [ ":__support_common", @@ -859,6 +871,10 @@ libc_function( name = "bcmp", srcs = ["src/string/bcmp.cpp"], hdrs = ["src/string/bcmp.h"], + copts = [ + "-fno-builtin-bcmp", + "-fno-builtin-memcmp", + ], features = no_sanitize_features, deps = [ ":__support_common", @@ -870,6 +886,11 @@ libc_function( name = "bzero", srcs = ["src/string/bzero.cpp"], hdrs = ["src/string/bzero.h"], + copts = [ + "-fno-builtin-bzero", + "-fno-builtin-memset", + "-mllvm -combiner-global-alias-analysis", + ], features = no_sanitize_features, deps = [ ":__support_common", diff --git a/utils/bazel/llvm-project-overlay/libc/libc_build_rules.bzl b/utils/bazel/llvm-project-overlay/libc/libc_build_rules.bzl index 8b4882d..8e86e8f 100644 --- a/utils/bazel/llvm-project-overlay/libc/libc_build_rules.bzl +++ b/utils/bazel/llvm-project-overlay/libc/libc_build_rules.bzl @@ -31,7 +31,6 @@ def libc_function(name, srcs, deps = None, copts = None, **kwargs): deps.append(LIBC_ROOT_TARGET) copts = copts or [] copts.append("-O3") - copts.append("-fno-builtin") # We compile the code twice, the first target is suffixed with ".__internal__" and contains the # C++ functions in the "__llvm_libc" namespace. This allows us to test the function in the