aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/c-c++-common/asan/no-redundant-instrumentation-2.c
blob: 28525e0ff0d92d71bd36f8610069d34eba44ad62 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/* This tests that when faced with two references to the same memory
   location in the same basic block, the second reference should not
   be instrumented by the Address Sanitizer.  But in case of access to
   overlapping regions we must be precise.  */

/* { dg-options "-fdump-tree-asan0" } */
/* { dg-do compile } */
/* { dg-skip-if "" { *-*-* } { "*" } { "-O0" } } */

int
main ()
{
  char tab[5];

  /* Here, we instrument the access at offset 0 and access at offset
     4.  */
  __builtin_memset (tab, 1, sizeof (tab));
  /* We instrumented access at offset 0 above already, so only access
     at offset 3 is instrumented.  */
  __builtin_memset (tab, 1, 3);
}

/* { dg-final { scan-tree-dump-times "__builtin___asan_report_store1" 3 "asan0" } } */
/* { dg-final { scan-tree-dump-times "__builtin___asan_report" 3 "asan0" }  } */
/* { dg-final { cleanup-tree-dump "asan0" } } */