+/* PR middle-end/94647 - bogus -Warray-bounds on strncpy into a larger
+ member array from a smaller array
+ { dg-do compile }
+ { dg-options "-O2 -Wall" } */
+
+typedef __SIZE_TYPE__ size_t;
+
+extern char* strncpy (char*, const char*, size_t);
+
+
+char a4[4], a8[8];
+
+void nowarn_nonmeber (void)
+{
+ /* The following would deserve a warning if A4 were known not to be
+ nul-terminated (or declared with attribute nonstring). */
+ strncpy (a8, a4, sizeof a8);
+}
+struct S
+{
+ char a4[4], a8[8];
+};
+
+void nowarn_member (struct S *p, struct S *q)
+{
+ /* The following would deserve a warning if A4 were known either
+ not to be nul-terminated (e.g., declared nonstring) or to be
+ uninitialized. */
+ strncpy (p->a8, p->a4, sizeof p->a8); // { dg-bogus "\\\[-Warray-bounds" }
+}