On 02/21/2017 02:23 PM, Jakub Jelinek wrote:
Hi!

As reported by Uros, the
fld a
fld b
fxchg %st(1)
optimization to
fld b
fld a
misses several important cases, one is FLOAT_EXTEND memory loads where
the memory is SFmode or DFmode but we extend it to a wider mode, and
the other is when we load a known i?87 constant like 0.0, 1.0, PI etc.

Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?

2017-02-21  Jakub Jelinek  <ja...@redhat.com>

        PR target/70465
        * reg-stack.c (emit_swap_insn): Treat (float_extend:?F (mem:?F))
        and (const_double:?F) like (mem:?F) for the purpose of fxch %st(1)
        elimination by swapping fld*.

        * gcc.target/i386/pr70465-2.c: New test.
OK.
jeff

Reply via email to