Hi! This testcase got fixed with r14-6132-g50f2a3370d177f8fe9bea0461feb710523e048a2 . I'm just adding a testcase so that it doesn't reappear.
Tested on x86_64-linux, with -m32/-m64, current trunk as well as r14-6131 where it ICEd with -m32, committed to trunk as obvious. 2023-12-09 Jakub Jelinek <ja...@redhat.com> PR tree-optimization/112924 * gcc.dg/pr112924.c: New test. --- gcc/testsuite/gcc.dg/pr112924.c.jj 2023-12-09 15:28:00.848388123 +0100 +++ gcc/testsuite/gcc.dg/pr112924.c 2023-12-09 15:27:34.401752018 +0100 @@ -0,0 +1,26 @@ +/* PR tree-optimization/112924 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -w" } */ +/* { dg-additional-options "-msse2" { target i?86-*-* x86_64-*-* } } */ + +struct S { long a; char b[64]; }; +void foo (struct S a); +char c; +int d[3541]; + +static void +bar (struct S *s, char *p) +{ + unsigned int a = sizeof (d) - sizeof (int) - s->a; + long c = __builtin_object_size (s, 0); + for (; a >= 64; a -= 64, p += 4); + __builtin___memcpy_chk (s, p, a, c); +} + +void +baz (void) +{ + struct S s = {}; + bar (&s, &c); + foo (s); +} Jakub