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

--- Comment #4 from H.J. Lu <hjl.tools at gmail dot com> ---
(In reply to H.J. Lu from comment #3)
> This is a latent bug in the sched1 pass.  This change
> 
> diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
> index effab299349..c532f0596c7 100644
> --- a/gcc/config/i386/i386.md
> +++ b/gcc/config/i386/i386.md
> @@ -10517,7 +10517,7 @@ (define_insn "*mul<mode>3_1<nf_name>"
>    [(set (match_operand:SWIM248 0 "register_operand" "=r,r,r,r")
>       (mult:SWIM248
>         (match_operand:SWIM248 1 "nonimmediate_operand" "%rm,rm,0,r")
> -       (match_operand:SWIM248 2 "<general_operand>" "K,<i>,<m>r,<m>r")))]
> +       (match_operand:SWIM248 2 "<general_operand>" "K,<i>,mr,mr")))]
>    "!(MEM_P (operands[1]) && MEM_P (operands[2]))
>     && <nf_condition>"
>    "@
> 
> hides the bug.

Correction.  This change:

diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index effab299349..3049589ded5 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -12584,7 +12584,7 @@ (define_insn "*andsi_1_zext"
 (define_insn "*and<mode>_1<nf_name>"
   [(set (match_operand:SWI24 0 "nonimmediate_operand"
"=rm,r<nf_mem_constraint>,r,r,r,r,Ya,?k")
   (and:SWI24 (match_operand:SWI24 1 "nonimmediate_operand"
"%0,0,0,rm,rjM,r,qm,k")
-        (match_operand:SWI24 2 "<general_operand>"
"r,<i>,<m>,r,<i>,<m>,L,k")))]
+        (match_operand:SWI24 2 "<general_operand>" "r,<i>,m,r,<i>,<m>,L,k")))]
   "ix86_binary_operator_ok (AND, <MODE>mode, operands, TARGET_APX_NDD)
    && <nf_condition>"
   "@

hides the bug.

Reply via email to