blob: f975baaaa1cc397bc0d6fd475dbfed5ccc8ac386 [file] [log] [blame]
/* { dg-do compile } */
/* { dg-additional-options "-fdump-tree-asan" } */
/* { dg-skip-if "" { *-*-* } { "-O0" } { "" } } */
/* Only skip the -flto tests without the -flto-partition=none.
With -flto-partition=none we still get a asan1 dump file, without that
parameter we only get the lto dump files (which means scan-tree-dump-times
doesn't work. */
/* { dg-skip-if "" { *-*-* } { "-flto" } { "-flto-partition=none" } } */
typedef __SIZE_TYPE__ size_t;
/* HWASAN used to instrument calls to memset, memcpy, and memmove. It no
longer does this. Many other string and memory builtins are intercepted by
the runtime (and hence the codegen need not do anything). */
void * __attribute__((noinline))
memset_builtin (void *dest, int value, size_t len)
{
return __builtin_memset (dest, value, len);
}
size_t __attribute__ ((noinline))
strlen_builtin (char *element)
{
return __builtin_strlen (element);
}
/* First check here ensures there is no inline instrumentation generated for
these builtins. Second checks that we end up calling memset (i.e. that it's
not optimised into an inline operation, which would happen without the
instrumentation). */
/* { dg-final { scan-tree-dump-not "HWASAN_CHECK" "asan1" } } */
/* { dg-final { scan-assembler-times "\tmemset\\M" 1 } } */