[Bug target/70750] [6/7 Regression] Load and call no longer combined for indirect calls on x86

david.abdurachmanov at gmail dot com gcc-bugzilla@gcc.gnu.org
Thu Apr 21 11:06:00 GMT 2016


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

David Abdurachmanov <david.abdurachmanov at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |david.abdurachmanov at gmail dot c
                   |                            |om

--- Comment #1 from David Abdurachmanov <david.abdurachmanov at gmail dot com> ---
I have noticed this while comparing assembly generated by GCC 5.3.0 and GCC
6.0.1.

Examples (diff -u 5.3.0 6.0.1)

  7 -       ff 50 18                callq  *0x18(%rax)
  8 +       48 8b 40 18             mov    0x18(%rax),%rax
  9 +       ff d0                   callq  *%rax

 41 -       ff 50 08                callq  *0x8(%rax)
 42 -       4c 8b 7b f8             mov    -0x8(%rbx),%r15
 43 +       48 8b 40 08             mov    0x8(%rax),%rax
 44 +       ff d0                   callq  *%rax
 45 +       49 8b 5f f8             mov    -0x8(%r15),%rbx

 49 -       ff 50 08                callq  *0x8(%rax)
 50 +       48 8b 40 08             mov    0x8(%rax),%rax
 51 +       ff d0                   callq  *%rax

Seems that GCC 6.0.1 is no more combining mov + callq. I have not checked if it
was intentional change or not in GCC.


More information about the Gcc-bugs mailing list