On Tue, Jul 21, 2020 at 6:13 PM Uros Bizjak <ubiz...@gmail.com> wrote:
>
> On Tue, Jul 21, 2020 at 5:46 PM Franz Sirl
> <franz.sirl-ker...@lauterbach.com> wrote:

> > I didn't bisect it, but I see a profiledbootstrap ICE that may be related:
>
> Ah, mfence_sse2 can be expanded from the __builtin_ia32_mfence
> independently of tuning flags. I'm testing the following patch:

Bootstrapped, regression tested on x86_64-linux-gnu {,-m32} for all
default languages + go, and committed with the following ChangeLog:

i386: Fix insn conditions of mfence patterns [PR95750]

2020-07-21  Uroš Bizjak  <ubiz...@gmail.com>

gcc/ChangeLog:
    PR target/95750
    * config/i386/sync.md (mfence_sse2): Enable for
    TARGET_64BIT and TARGET_SSE2.
    (mfence_nosse): Always enable.

Uros.

> --cut here--
> diff --git a/gcc/config/i386/sync.md b/gcc/config/i386/sync.md
> index c6827037abf..c88750d3664 100644
> --- a/gcc/config/i386/sync.md
> +++ b/gcc/config/i386/sync.md
> @@ -89,8 +89,7 @@
>  (define_insn "mfence_sse2"
>    [(set (match_operand:BLK 0)
>         (unspec:BLK [(match_dup 0)] UNSPEC_MFENCE))]
> -  "(TARGET_64BIT || TARGET_SSE2)
> -   && !TARGET_AVOID_MFENCE"
> +  "TARGET_64BIT || TARGET_SSE2"
>    "mfence"
>    [(set_attr "type" "sse")
>     (set_attr "length_address" "0")
> @@ -101,8 +100,7 @@
>    [(set (match_operand:BLK 0)
>         (unspec:BLK [(match_dup 0)] UNSPEC_MFENCE))
>     (clobber (reg:CC FLAGS_REG))]
> -  "!(TARGET_64BIT || TARGET_SSE2)
> -   || TARGET_AVOID_MFENCE"
> +  ""
>  {
>    rtx mem = gen_rtx_MEM (word_mode, stack_pointer_rtx);
>
> --cut here--
>
> Uros.

Reply via email to