[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:
parent
5a0b91fc28
commit
b454e7aa7c
@ -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__)
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user