[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
This commit is contained in:
Joseph Huber 2023-07-10 10:03:07 -05:00
parent 5a0b91fc28
commit b454e7aa7c
3 changed files with 8 additions and 26 deletions

View File

@ -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__)

View File

@ -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

View File

@ -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