/* PR middle-end/92014 - bogus warning: writing 8 bytes into a region of size 1 in timezone/zic.c { dg-do compile } { dg-options "-O2 -Wall" } */ struct { char *s1, *s2; char c; } z; void f (char **a, int i, int j) { char * cp = __builtin_strchr (a[i], '%'); if (cp && *++cp != 's') return; z.s1 = __builtin_strdup (a[i]); if (!z.s1) __builtin_abort (); z.s2 = __builtin_strdup (a[j]); if (!z.s2) __builtin_abort (); z.c = cp ? *cp : '\0'; // { dg-bogus "\\\[-Wstringop-overflow" } }