Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/c-c++-common/ubsan/object-size-3.c @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
/* { dg-do run } */ /* { dg-skip-if "" { *-*-* } { "*" } { "-O2" } } */ /* { dg-options "-fsanitize=object-size -fno-sanitize-recover=object-size" } */ /* Test valid uses. */ #define N 20 __attribute__((noinline, noclone)) void f1 (int i) { volatile int j; char *p, *orig; orig = p = (char *) __builtin_calloc (N, 1); j = *(p + i); j = p[i]; p++; j = p[i - 1]; j = *(p + i - 1); __builtin_free (orig); } __attribute__((noinline, noclone)) void f2 (int i) { volatile int j; char a[N]; __builtin_memset (a, 0, N); j = *(a + i); char *p = a; j = *(p + i); j = p[i]; p += 10; j = *(p + i - 10); j = p[i - 10]; } __attribute__((noinline, noclone)) void f3 (int i) { volatile int j; int *p = (int *) __builtin_calloc (N, sizeof (*p)); int *o = &p[i]; j = *o; j = o[0]; __builtin_free (p); } int main () { f1 (N - 1); f2 (N - 1); f3 (N - 1); return 0; }