https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92956
--- Comment #10 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Make that: struct T { char a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p; }; struct S { long l; struct T t; }; void foo (long l, struct S *p) { p->l = l; p->t.a = 2; p->t.b = 3; p->t.c = 4; p->t.d = 5; p->t.e = 6; p->t.f = 7; p->t.g = 8; p->t.h = 9; p->t.i = 10; p->t.j = 11; p->t.k = 12; p->t.l = 13; p->t.m = 14; p->t.n = 15; p->t.o = 16; p->t.p = 17; } and at -O3 slp2 doing: + vect_cst__21 = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 }; p_2(D)->l = l_3(D); - p_2(D)->t.a = 2; - p_2(D)->t.b = 3; - p_2(D)->t.c = 4; - p_2(D)->t.d = 5; - p_2(D)->t.e = 6; - p_2(D)->t.f = 7; - p_2(D)->t.g = 8; - p_2(D)->t.h = 9; - p_2(D)->t.i = 10; - p_2(D)->t.j = 11; - p_2(D)->t.k = 12; - p_2(D)->t.l = 13; - p_2(D)->t.m = 14; - p_2(D)->t.n = 15; - p_2(D)->t.o = 16; - p_2(D)->t.p = 17; + vectp.4_22 = &p_2(D)->t.a; + MEM <vector(16) char> [(char *)vectp.4_22] = vect_cst__21; pr92956.c: In function ‘foo’: pr92956.c:8:10: warning: writing 16 bytes into a region of size 1 [-Wstringop-overflow=] 8 | p->t.a = 2; | ~~~~~~~^~~ pr92956.c:1:17: note: at offset 0 to object ‘a’ with size 1 declared here 1 | struct T { char a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p; }; | ^