https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79185
Bug ID: 79185 Summary: Possible regression in gcc 4.9 and later with the addition of two 128 bit ints Product: gcc Version: 7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: drraph at gmail dot com Target Milestone: --- Consider this code: __int128_t ai (__int128_t x, __int128_t y) { return x + y; } In gcc 4.8.5, clang and icc using -O2 this gives code that is more or less exactly: ai: mov rax, rdx mov rdx, rcx add rax, rdi adc rdx, rsi ret However in gcc 4.9 and later you get ai: mov r9, rdi mov r10, rsi add r9, rdx adc r10, rcx mov rax, r9 mov rdx, r10 ret Interestingly, that is also the code you get in gcc 4.8.5 if you use -O instead of -O2. Is this addition of two extra mov's a regression?