SDL_memcpy.c, SDL_memmove.c, SDL_memset.c: don't use gcc builtins if !HAVE_LIBC
__builtin_memcpy, as well as __builtin_memset and __builtin_memmove, needn't be inlined but emitted as a libc call, leading to infinitely recursive calls. Fixes https://github.com/libsdl-org/SDL/issues/9090main
parent
bb4ec5250f
commit
cb3a1a82d5
|
@ -29,7 +29,7 @@
|
||||||
#endif
|
#endif
|
||||||
void *SDL_memcpy(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len)
|
void *SDL_memcpy(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len)
|
||||||
{
|
{
|
||||||
#ifdef __GNUC__
|
#if defined(__GNUC__) && (defined(HAVE_LIBC) && HAVE_LIBC)
|
||||||
/* Presumably this is well tuned for speed.
|
/* Presumably this is well tuned for speed.
|
||||||
On my machine this is twice as fast as the C code below.
|
On my machine this is twice as fast as the C code below.
|
||||||
*/
|
*/
|
||||||
|
@ -76,7 +76,7 @@ void *SDL_memcpy(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return dst;
|
return dst;
|
||||||
#endif /* __GNUC__ */
|
#endif /* HAVE_MEMCPY */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The optimizer on Visual Studio 2005 and later generates memcpy() and memset() calls.
|
/* The optimizer on Visual Studio 2005 and later generates memcpy() and memset() calls.
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
#endif
|
#endif
|
||||||
void *SDL_memmove(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len)
|
void *SDL_memmove(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len)
|
||||||
{
|
{
|
||||||
#ifdef __GNUC__
|
#if defined(__GNUC__) && (defined(HAVE_LIBC) && HAVE_LIBC)
|
||||||
/* Presumably this is well tuned for speed. */
|
/* Presumably this is well tuned for speed. */
|
||||||
return __builtin_memmove(dst, src, len);
|
return __builtin_memmove(dst, src, len);
|
||||||
#elif defined(HAVE_MEMMOVE)
|
#elif defined(HAVE_MEMMOVE)
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
#endif
|
#endif
|
||||||
void *SDL_memset(SDL_OUT_BYTECAP(len) void *dst, int c, size_t len)
|
void *SDL_memset(SDL_OUT_BYTECAP(len) void *dst, int c, size_t len)
|
||||||
{
|
{
|
||||||
#ifdef __GNUC__
|
#if defined(__GNUC__) && (defined(HAVE_LIBC) && HAVE_LIBC)
|
||||||
return __builtin_memset(dst, c, len);
|
return __builtin_memset(dst, c, len);
|
||||||
#elif defined(HAVE_MEMSET)
|
#elif defined(HAVE_MEMSET)
|
||||||
return memset(dst, c, len);
|
return memset(dst, c, len);
|
||||||
|
|
Loading…
Reference in New Issue