On 6/21/2022 12:12 PM, Noah Goldstein via Gcc-patches wrote:
This patch allows for strchr(x, c) to the replace with memchr(x, c,
strlen(x) + 1) if strlen(x) has already been computed earlier in the
tree.

Handles PR95821: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95821

Since memchr doesn't need to re-find the null terminator it is faster
than strchr.

bootstrapped and tested on x86_64-linux.

        PR tree-optimization/95821

gcc/

        * tree-ssa-strlen.cc (strlen_pass::handle_builtin_strchr): Emit
        memchr instead of strchr if strlen already computed.

gcc/testsuite/

        * c-c++-common/pr95821-1.c: New test.
        * c-c++-common/pr95821-2.c: New test.
        * c-c++-common/pr95821-3.c: New test.
        * c-c++-common/pr95821-4.c: New test.
        * c-c++-common/pr95821-5.c: New test.
        * c-c++-common/pr95821-6.c: New test.
        * c-c++-common/pr95821-7.c: New test.
        * c-c++-common/pr95821-8.c: New test.
Given Jakub's involvement to-date and the fact this touches tree-ssa-strlen.cc I think Jakub should have final ACK/NAK on this.

jeff

Reply via email to