Author: Joseph Huber Date: 2023-07-10T10:40:10-05:00 New Revision: b454e7aa7ceb35a0070406ebd7ffdf1ed85f5ef8
URL: https://github.com/llvm/llvm-project/commit/b454e7aa7ceb35a0070406ebd7ffdf1ed85f5ef8 DIFF: https://github.com/llvm/llvm-project/commit/b454e7aa7ceb35a0070406ebd7ffdf1ed85f5ef8.diff LOG: [libc] Remove GPU string functions incompatible with C++ These functions have definitions differing between C and C++. GNU respects the C++ definitions while the LLVM libc does not. This causes many bugs and the current hack creates other issues. Rather than hack around this I'd rather temporarily disable these than regress with the integration into other offloading languages. We lose test support for them but we should be able to re-enable these once the `libc` headers provide these correctly. Reviewed By: JonChesterfield Differential Revision: https://reviews.llvm.org/D154850 Added: Modified: clang/lib/Headers/llvm_libc_wrappers/string.h libc/config/gpu/entrypoints.txt libc/docs/gpu/support.rst Removed: ################################################################################ diff --git a/clang/lib/Headers/llvm_libc_wrappers/string.h b/clang/lib/Headers/llvm_libc_wrappers/string.h index 0cab5615ad1300..027c415c1d0f8f 100644 --- a/clang/lib/Headers/llvm_libc_wrappers/string.h +++ b/clang/lib/Headers/llvm_libc_wrappers/string.h @@ -13,22 +13,11 @@ #error "This file is for GPU offloading compilation only" #endif -// The GNU headers provide non C-standard headers when in C++ mode. Manually -// undefine it here so that the definitions agree with the C standard for our -// purposes. -#ifdef __cplusplus -extern "C" { -#pragma push_macro("__cplusplus") -#undef __cplusplus -#endif - +// FIXME: The GNU headers provide C++ standard compliant headers when in C++ +// mode and the LLVM libc does not. We cannot enable memchr, strchr, strchrnul, +// strpbrk, strrchr, strstr, or strcasestr until this is addressed. #include_next <string.h> -#pragma pop_macro("__cplusplus") -#ifdef __cplusplus -} -#endif - #if __has_include(<llvm-libc-decls/string.h>) #if defined(__HIP__) || defined(__CUDA__) diff --git a/libc/config/gpu/entrypoints.txt b/libc/config/gpu/entrypoints.txt index 4316f8a57a8731..e475c80d26b205 100644 --- a/libc/config/gpu/entrypoints.txt +++ b/libc/config/gpu/entrypoints.txt @@ -21,7 +21,6 @@ set(TARGET_LIBC_ENTRYPOINTS libc.src.string.bcmp libc.src.string.bzero libc.src.string.memccpy - libc.src.string.memchr libc.src.string.memcmp libc.src.string.memcpy libc.src.string.memmem @@ -32,10 +31,7 @@ set(TARGET_LIBC_ENTRYPOINTS libc.src.string.stpcpy libc.src.string.stpncpy libc.src.string.strcasecmp - libc.src.string.strcasestr libc.src.string.strcat - libc.src.string.strchr - libc.src.string.strchrnul libc.src.string.strcmp libc.src.string.strcpy libc.src.string.strcspn @@ -47,10 +43,7 @@ set(TARGET_LIBC_ENTRYPOINTS libc.src.string.strncmp libc.src.string.strncpy libc.src.string.strnlen - libc.src.string.strpbrk - libc.src.string.strrchr libc.src.string.strspn - libc.src.string.strstr libc.src.string.strtok libc.src.string.strtok_r diff --git a/libc/docs/gpu/support.rst b/libc/docs/gpu/support.rst index bc94c833efeb70..1c7b2538fffd53 100644 --- a/libc/docs/gpu/support.rst +++ b/libc/docs/gpu/support.rst @@ -47,7 +47,7 @@ Function Name Available RPC Required bcmp |check| bzero |check| memccpy |check| -memchr |check| +memchr memcmp |check| memcpy |check| memmove |check| @@ -57,7 +57,7 @@ memset |check| stpcpy |check| stpncpy |check| strcat |check| -strchr |check| +strchr strcmp |check| strcpy |check| strcspn |check| @@ -68,10 +68,10 @@ strncat |check| strncmp |check| strncpy |check| strnlen |check| -strpbrk |check| -strrchr |check| +strpbrk +strrchr strspn |check| -strstr |check| +strstr strtok |check| strtok_r |check| strdup _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits