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-*-*.

Reply via email to