| /* PR tree-optimization/99489 - ICE calling strncat after strncat |
| { dg-do compile } |
| { dg-options "-O2 -Wall" } */ |
| |
| // Important -- see pr82429. |
| char *stpcpy (char *, const char *); |
| |
| void fchar (char *d, char c, char *s) |
| { |
| __builtin_strcat (d, s); |
| __builtin_strncat (d, &c, 1); |
| } |
| |
| void fcstchar (char *d, char *s) |
| { |
| __builtin_strcat (d, s); |
| |
| const char c = 'x'; |
| __builtin_strncat (d, &c, 1); // { dg-warning "-Wstringop-truncation" } |
| } |
| |
| void fstr (char *d, char *s) |
| { |
| __builtin_strcat (d, s); |
| __builtin_strncat (d, s, 1); |
| } |
| |
| void farr (char *d, char *s) |
| { |
| __builtin_strcat (d, s); |
| |
| char a[] = "x"; |
| __builtin_strncat (d, a, 1); // { dg-warning "-Wstringop-truncation" } |
| } |
| |
| void flit (char *d, char *s) |
| { |
| __builtin_strcat (d, s); |
| __builtin_strncat (d, "x", 1); // { dg-warning "-Wstringop-truncation" "pr?????" { xfail *-*-*} } |
| // { dg-warning "-Wstringop-overflow" "actual" { target *-*-*} .-1 } |
| } |