blob: 612137ee469c1ff5a2f29c0cac7f202192ebf6b4 [file] [log] [blame]
/* Verify that calls to strcpy to write to an element of an array of pointers
are not diagnosed (due to mistakenly using the size of the array as that
of the destination).
{ dg-do compile }
{ dg-options "-O2 -Wall" } */
typedef char A1[1];
typedef char A2[2];
typedef char A3[3];
typedef char A4[4];
typedef char A5[5];
typedef char A6[6];
typedef char A7[7];
typedef char A8[8];
typedef char A9[9];
typedef char A10[10];
A1* pa1[3];
A2* pa2[3];
A3* pa3[3];
A4* pa4[3];
A5* pa5[3];
A6* pa6[3];
A7* pa7[3];
A8* pa8[3];
A9* pa9[3];
A10* pa10[3];
void nowarn_a1_1 (int i)
{
__builtin_strcpy (*pa1[0], "");
__builtin_strcpy (*pa1[1], "");
__builtin_strcpy (*pa1[i], "");
}
void nowarn_a2_2 (int i)
{
__builtin_strcpy (*pa2[0], "1");
__builtin_strcpy (*pa2[1], "2");
__builtin_strcpy (*pa2[i], "3");
}
void nowarn_a3_3 (int i)
{
__builtin_strcpy (*pa3[0], "12");
__builtin_strcpy (*pa3[1], "23");
__builtin_strcpy (*pa3[i], "34");
}
void nowarn_a4_4 (int i)
{
__builtin_strcpy (*pa4[0], "123");
__builtin_strcpy (*pa4[1], "234");
__builtin_strcpy (*pa4[i], "345");
}
void nowarn_a5_5 (int i)
{
__builtin_strcpy (*pa5[0], "1234");
__builtin_strcpy (*pa5[1], "2345");
__builtin_strcpy (*pa5[i], "3456");
}
void nowarn_a6_6 (int i)
{
__builtin_strcpy (*pa6[0], "12345");
__builtin_strcpy (*pa6[1], "23456");
__builtin_strcpy (*pa6[1], "34567");
}
void nowarn_a10_10 (int i)
{
__builtin_strcpy (*pa10[0], "0123456789");
__builtin_strcpy (*pa10[1], "1234567890");
__builtin_strcpy (*pa10[i], "2345678909");
}