| /* PR middle-end/82456 - missing -Wstringop-overflow on strcpy reading past |
| the end of an array |
| { dg-do compile } |
| { dg-options "-O2 -Wall" } */ |
| |
| void fcst (char *d) |
| { |
| char a[2] = "0"; |
| |
| __builtin_strcpy (d, a + 3); // { dg-warning "\\\[-W(array-bounds|stringop-overread)" } |
| } |
| |
| void frng (char *d, int i) |
| { |
| char a[2] = "0"; |
| |
| if (i < 3) |
| i = 3; |
| |
| __builtin_strcpy (d, a + i); // { dg-warning "\\\[-W(array-bounds|stringop-overread)" } |
| } |
| |
| void gcst (char *d) |
| { |
| char a[2] = "0"; |
| |
| __builtin_strcpy (d, a + 2); // { dg-warning "\\\[-W(array-bounds|stringop-overread)" } |
| } |
| |
| void grng (char *d, int i) |
| { |
| char a[2] = "0"; |
| |
| if (i < 2) |
| i = 2; |
| |
| __builtin_strcpy (d, a + i); // { dg-warning "\\\[-W(array-bounds|stringop-overread)" } |
| } |
| |
| /* { dg-prune-output "-Wuninitialized" } */ |