diff --git a/libc/cmake/modules/LLVMLibCObjectRules.cmake b/libc/cmake/modules/LLVMLibCObjectRules.cmake --- a/libc/cmake/modules/LLVMLibCObjectRules.cmake +++ b/libc/cmake/modules/LLVMLibCObjectRules.cmake @@ -3,7 +3,7 @@ function(_get_common_compile_options output_var) set(compile_options ${LIBC_COMPILE_OPTIONS_DEFAULT} ${ARGN}) if(NOT ${LIBC_TARGET_OS} STREQUAL "windows") - set(compile_options ${compile_options} -fpie -ffreestanding) + set(compile_options ${compile_options} -fpie -ffreestanding -fno-builtin) 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 --- a/libc/src/string/CMakeLists.txt +++ b/libc/src/string/CMakeLists.txt @@ -279,7 +279,6 @@ ${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}") @@ -309,9 +308,6 @@ DEPENDS .memory_utils.memory_utils libc.include.string - COMPILE_OPTIONS - -fno-builtin-memcmp - -fno-builtin-bcmp ${ARGN} ) endfunction() @@ -339,8 +335,6 @@ DEPENDS .memory_utils.memset_implementation libc.include.string - COMPILE_OPTIONS - -fno-builtin-bzero ${ARGN} ) endfunction() @@ -368,8 +362,6 @@ DEPENDS .memory_utils.memcmp_implementation libc.include.string - COMPILE_OPTIONS - -fno-builtin-memcmp ${ARGN} ) endfunction() @@ -400,8 +392,6 @@ DEPENDS .memory_utils.memcpy_implementation libc.include.string - COMPILE_OPTIONS - -fno-builtin-memcpy ${ARGN} ) endfunction() @@ -434,8 +424,6 @@ DEPENDS .memory_utils.memory_utils libc.include.string - COMPILE_OPTIONS - -fno-builtin ${ARGN} ) endfunction() @@ -468,8 +456,6 @@ 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 --- a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel +++ b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel @@ -9,6 +9,7 @@ package( default_visibility = ["//visibility:public"], + features = ["-header_modules"], licenses = ["notice"], ) @@ -85,7 +86,10 @@ hdrs = [ "src/__support/CPP/UInt.h", ], - deps = [":libc_root","__support_cpp_array"], + deps = [ + "__support_cpp_array", + ":libc_root", + ], ) cc_library( @@ -93,7 +97,10 @@ hdrs = [ "src/__support/CPP/TypeTraits.h", ], - deps = [":libc_root","__support_cpp_uint"], + deps = [ + "__support_cpp_uint", + ":libc_root", + ], ) cc_library( @@ -806,12 +813,6 @@ 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,10 +824,6 @@ 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", @@ -838,10 +835,6 @@ 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", @@ -855,10 +848,6 @@ 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", @@ -871,10 +860,6 @@ 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", @@ -886,11 +871,6 @@ 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 --- a/utils/bazel/llvm-project-overlay/libc/libc_build_rules.bzl +++ b/utils/bazel/llvm-project-overlay/libc/libc_build_rules.bzl @@ -31,6 +31,7 @@ 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