Landing: e63a873f1df7

Project / Subsystem

gcc / i386

Date

2026-06-13

Author

Oleg Tolmatcev

Commit

e63a873f1df7493b8b657acafb451bf40166044e

Source

github

Perf win

No

Breaking

No

All attributes

project
gcc
subsystem
i386
patch_id
commit_hash
e63a873f1df7493b8b657acafb451bf40166044e
source_type
github
headline
Fix i386 Win64 ABI compliance for __int128 return values.
tldr
i386 backend now correctly handles __int128 return values on Windows x64 according to the MS ABI.
author
Oleg Tolmatcev
outcome
committed
performance_win
false
breaking_change
false
series_id
series_parts
[]
tags
  • abi
  • x86
  • windows
discussion_id_link
bugzilla_pr
date
2026-06-13T00:00:00.000Z

GCC’s i386 backend has been corrected to comply with the Windows x64 ABI regarding the return of __int128 types. Previously, the compiler incorrectly returned 128-bit integer types in SSE registers (%xmm0), deviating from the ABI’s requirement to use indirect memory returns for such types. This patch ensures that __int128 values are treated as indirect returns, with the caller providing a memory slot passed as the first argument and a pointer returned in RAX.