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

Reply via email to