https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117137

--- Comment #3 from Haochen Jiang <haochen.jiang at intel dot com> ---
>From my bisect:

5977b746db3925aaba37722f5312419d5f2968a5 is the first bad commit
commit 5977b746db3925aaba37722f5312419d5f2968a5
Author: Richard Biener <rguent...@suse.de>
Date:   Tue Oct 8 09:01:01 2024 +0200

    tree-optimization/117000 - elide .REDUC_IOR with compare against zero

    The following adds a pattern to elide a .REDUC_IOR operation when
    the result is compared against zero with a cbranch.  I've resorted
    to using can_compare_p since that's what RTL expansion eventually
    checks - while GIMPLE allowed whole vector equality compares for long
    I'll notice vector lowering won't lower unsupported ones and RTL
    expansion doesn't seem to try using [u]cmp<vector-mode> optabs
    (and neither x86 nor aarch64 implements those).  There's cstore
    but no target implements that for vector modes either.

            PR tree-optimization/117000
            * match.pd (.REDUC_IOR !=/== 0): New pattern.
            * gimple-match-head.cc: Include memmodel.h and optabs.h.
            * generic-match-head.cc: Likewise.

            * gcc.target/i386/pr117000.c: New testcase.

 gcc/generic-match-head.cc                |  2 ++
 gcc/gimple-match-head.cc                 |  2 ++
 gcc/match.pd                             |  9 +++++++++
 gcc/testsuite/gcc.target/i386/pr117000.c | 13 +++++++++++++
 4 files changed, 26 insertions(+)
 create mode 100644 gcc/testsuite/gcc.target/i386/pr117000.c

Reply via email to