https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113701
--- Comment #4 from Uroš Bizjak <ubizjak at gmail dot com> --- (In reply to Uroš Bizjak from comment #2) > > The most problematic function is f3, which regressed noticeably from > > gcc-12.3: > > This patch solves the regression: > > --cut here-- > diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md > index bac0a6ade67..02fed16db72 100644 > --- a/gcc/config/i386/i386.md > +++ b/gcc/config/i386/i386.md > @@ -1632,11 +1632,6 @@ (define_insn_and_split "*cmp<dwi>_doubleword" > (set (match_dup 4) (ior:DWIH (match_dup 4) (match_dup 5)))])] > { > split_double_mode (<DWI>mode, &operands[0], 2, &operands[0], > &operands[2]); > - /* Placing the SUBREG pieces in pseudos helps reload. */ > - for (int i = 0; i < 4; i++) > - if (SUBREG_P (operands[i])) > - operands[i] = force_reg (<MODE>mode, operands[i]); > - > operands[4] = gen_reg_rtx (<MODE>mode); > > /* Special case comparisons against -1. */ > --cut here-- Roger, this part was added in [1]. Does this code improve some real reload issue, not covered in the testsuite, because testsuite results do not show any regression if the above code is removed. BTW: The issue was noticed in gcc.target/i386/pr82580.c test case. [1] https://gcc.gnu.org/pipermail/gcc-patches/2022-May/595860.html