https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105122
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- PASS: gcc.dg/strlenopt-73.c (test for excess errors) gcc.dg/strlenopt-73.c: pattern found 4 times FAIL: gcc.dg/strlenopt-73.c scan-tree-dump-times optimized "strlen" 0 gcc.dg/strlenopt-73.c: pattern found 6 times FAIL: gcc.dg/strlenopt-73.c scan-tree-dump-times optimized "_not_eliminated_" 0 #if defined(__i386__) || defined(__x86_64__) || defined(__aarch64__) \ || defined(__s390__) || defined(__powerpc64__) /* The following tests assume GCC transforms the memcpy calls into long long assignments which it does only on targets that define the MOVE_MAX macro to 8 or higher. Enable on a set of targets known to do that. */ that's no longer true for i?86 w/o SSE (and now memcpy folding honors that). I'll adjust this testcase. PASS: gcc.dg/strlenopt-80.c (test for excess errors) gcc.dg/strlenopt-80.c: pattern found 5 times FAIL: gcc.dg/strlenopt-80.c scan-tree-dump-times optimized "failure_on_line \\(" 0 similar, the testcase says The optimization is only implemented for MEM_REF stores and other targets than those below may not transform the memcpy call into such a store. { dg-do compile { target { { aarch64*-*-* i?86-*-* x86_64-*-* } || { { powerpc*-*-* } && lp64 } } } } one way to fix this testcase would be to explicitely enable SSE for i?86-*-*.