Viewing file: Warray-bounds-27.c (970 B) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* { dg-do compile } { dg-options "-O2 -Wall -Wextra -Warray-bounds -Wrestrict" } */
typedef __SIZE_TYPE__ size_t;
extern void* memcpy (void* restrict, const void* restrict, size_t);
extern void sink (void*, ...);
struct Data { size_t n; void *p; };
void test_copy (void) { struct Data d; sink (&d);
char dp1[sizeof d + 1]; char d2x[2 * sizeof d]; char d2xp1[2 * sizeof d + 1];
/* During development the following would incorrectly trigger: warning: 'memcpy' forming offset [17, 25] is out of the bounds [0, 16] of object ādā with type 'struct Data' [-Warray-bounds] that wasn't caught by the test suite. Make sure it is. */ memcpy (&dp1, d.p, sizeof dp1); /* { dg-bogus "\\\[-Warray-bounds" } */
/* Likewise. */ memcpy (&d2x, d.p, sizeof d2x); /* { dg-bogus "\\\[-Warray-bounds" } */ memcpy (&d2xp1, d.p, sizeof d2xp1); /* { dg-bogus "\\\[-Warray-bounds" } */
sink (&d, &dp1, &d2x, &d2xp1); }
|