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