From 65303a4e572e8b7c949b6eb25824fb768aba1138 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Miku=C5=82a?= Date: Tue, 20 Sep 2022 10:49:41 +0300 Subject: [PATCH] [TargetLibraryInfo] Mark memrchr as unavailable on Windows Otherwise LLVM will optimise strrchr into memrchr on Windows resulting in linker error: ``` $ cat memrchr_test.c int main(int argc, char **argv) { return (long)strrchr("KkMm", argv[argc-1][0]); } $ clang memrchr_test.c -O memrchr_test.c:3:12: warning: cast to smaller integer type 'long' from 'char *' [-Wpointer-to-int-cast] return (long)strrchr("KkMm", argv[argc-1][0]); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 warning generated. ld.lld: error: undefined symbol: memrchr >>> referenced by D:/msys64/tmp/memrchr_test-e7aabd.o:(main) clang: error: linker command failed with exit code 1 (use -v to see invocation) ``` Example taken from MSYS2 Discord and tested with windows-gnu target. Reviewed By: aeubanks Differential Revision: https://reviews.llvm.org/D134134 Original commit: 4f30c5808a49ba85b052cb65bbe7b34109187bad This commit is a backport only and is expected to be replaceable with the original commit during rebase. Signed-off-by: Olshevsky Vladimir Change-Id: I5a8a64ed86770c9533bb81f0f96d7802d396b3f6 --- llvm/lib/Analysis/TargetLibraryInfo.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/llvm/lib/Analysis/TargetLibraryInfo.cpp b/llvm/lib/Analysis/TargetLibraryInfo.cpp index 08209277832e..c3462ed2bb38 100644 --- a/llvm/lib/Analysis/TargetLibraryInfo.cpp +++ b/llvm/lib/Analysis/TargetLibraryInfo.cpp @@ -410,6 +410,9 @@ static void initialize(TargetLibraryInfoImpl &TLI, const Triple &T, TLI.setUnavailable(LibFunc_htons); TLI.setUnavailable(LibFunc_lchown); TLI.setUnavailable(LibFunc_lstat); + // OHOS_LOCAL begin backported from 4f30c5808a49ba85b052cb65bbe7b34109187bad + TLI.setUnavailable(LibFunc_memrchr); + // OHOS_LOCAL end backported from 4f30c5808a49ba85b052cb65bbe7b34109187bad TLI.setUnavailable(LibFunc_ntohl); TLI.setUnavailable(LibFunc_ntohs); TLI.setUnavailable(LibFunc_pread); -- Gitee