https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112563

--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
So, what is the Solaris/sparc native as syntax for something similar?
Strangely, non-weak aliases in config/sparc/sysv4.h use the x = y syntax
rather than .set x, y that is used on most targets.
Would using
extern "C" void *memcpy (void *, const void *, decltype (sizeof 0)) __asm
("__sanitizer_internal_memcpy");
extern "C" void *memmove (void *, const void *, decltype (sizeof 0)) __asm
("__sanitizer_internal_memmove");
extern "C" void *memset (void *, int, decltype (sizeof 0)) __asm
("__sanitizer_internal_memset");
extern "C" void *__builtin_memcpy (void *, const void *, decltype (sizeof 0))
__asm ("__sanitizer_internal_memcpy");
extern "C" void *__builtin_memmove (void *, const void *, decltype (sizeof 0))
__asm ("__sanitizer_internal_memmove");
extern "C" void *__builtin_memset (void *, int, decltype (sizeof 0)) __asm
("__sanitizer_internal_memset");
instead work there?
At least on x86_64-linux, I get the same effects when using e.g.
void
foo (void *r, void *s, void *t, void *u)
{
  memcpy (r, s, 512);
  __builtin_memcpy (t, u, 512);
}
with -O2 -mstringop-strategy=libcall

Reply via email to