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.