blob: 266443fe25d4ef5a933444bd9e50fb50aadae2d0 [file] [log] [blame]
/* Test to verify that VLAs are handled gracefully by -Wrestrict
{ dg-do compile }
{ dg-options "-O2 -Wrestrict" }
{ dg-require-effective-target alloca } */
typedef __SIZE_TYPE__ size_t;
#define memcpy(d, s, n) __builtin_memcpy (d, s, n)
#define strcpy(d, s) __builtin_strcpy (d, s)
void test_vla (void *d, const char *s1, const char *s2, int i, size_t n)
{
char a[n];
char b[n];
strcpy (a, s1);
strcpy (b, s2);
memcpy (d, i ? a : b, n);
}
void test_vla_member (void *d, const char *s1, const char *s2, int i, size_t n)
{
struct S
{
char a[n];
char b[n];
} s;
strcpy (s.a, s1);
strcpy (s.b, s2);
memcpy (d, i ? s.a : s.b, n);
}