[Bug rtl-optimization/92549] New: Use x86 xchg instruction more

drepper.fsp+rhbz at gmail dot com gcc-bugzilla@gcc.gnu.org
Sun Nov 17 16:59:00 GMT 2019


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

            Bug ID: 92549
           Summary: Use x86 xchg instruction more
           Product: gcc
           Version: 9.2.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: rtl-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: drepper.fsp+rhbz at gmail dot com
  Target Milestone: ---

Take this code

__attribute__((noinline))
int f(int a, int b)
{
  return b - a + 5;
}
int foo(int a, int b)
{
  return 1 + f(b, a);
}
int main()
{
  return foo(39, 3);
}

gcc 9.2.1 generates for foo on x86-64 this code:

        movl    %edi, %r8d
        movl    %esi, %edi
        movl    %r8d, %esi
        call    f
        addl    $1, %eax
        ret

This could be better:

        xchgl   %edi, %esi
        call    f
        addl    $1, %eax
        ret

Switching parameter location is not a uncommon pattern.

If the regparm is used on x86-32 the same likely applies there.


More information about the Gcc-bugs mailing list