[Bug target/92807] gcc generate extra move for the snippet code along with lea instruction.

liuhongt at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Dec 17 01:29:00 GMT 2019


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

--- Comment #6 from liuhongt at gcc dot gnu.org ---
Author: liuhongt
Date: Tue Dec 17 01:29:09 2019
New Revision: 279451

URL: https://gcc.gnu.org/viewcvs?rev=279451&root=gcc&view=rev
Log:
Use add for a = a + b and a = b + a when possible.
Since except for Bonnell,

01 fb                   add    %edi,%ebx

is faster and shorter than

8d 1c 1f                lea    (%rdi,%rbx,1),%ebx

we should use add for a = a + b and a = b + a when possible if not
optimizing for Bonnell.

Tested on x86-64.

2019-12-17  H.J. Lu  <hjl.tools@gmail.com>

gcc/

        PR target/92807
        * config/i386/i386.c (ix86_lea_outperforms): Check !TARGET_BONNELL.
        (ix86_avoid_lea_for_addr): When not optimizing for Bonnell, use add
        for a = a + b and a = b + a.

gcc/testsuite/

        PR target/92807
        * gcc.target/i386/pr92807-1.c: New test.

Added:
    trunk/gcc/testsuite/gcc.target/i386/pr92807-1.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/i386/i386.c
    trunk/gcc/testsuite/ChangeLog


More information about the Gcc-bugs mailing list