/* PR sanitizer/108777 */
/* { dg-do compile } */
/* { dg-options "-O2 -fno-sanitize=all -fsanitize=kernel-address --param asan-kernel-mem-intrinsic-prefix=1" } */
/* { dg-final { scan-assembler "__asan_memcpy" } } */
/* { dg-final { scan-assembler "__asan_memset" } } */
/* { dg-final { scan-assembler "__asan_memmove" } } */

extern void *memcpy (void *, const void *, __SIZE_TYPE__);
extern void *memmove (void *, const void *, __SIZE_TYPE__);
extern void *memset (void *, int, __SIZE_TYPE__);

void
foo (void *p, void *q, int s)
{
  memcpy (p, q, s);
}

void
bar (void *p, void *q, int s)
{
  memmove (p, q, s);
}

void
baz (void *p, int c, int s)
{
  memset (p, c, s);
}
