Landing: ccd676ca79aa
Project / Subsystem
gcc / i386
Date
2026-07-21
Author
Roger Sayle
Commit
ccd676ca79aa783e9e52de213a5619265ec9a8d2
Source
github
Perf win
Yes
Breaking
No
All attributes
- project
- gcc
- subsystem
- i386
- patch_id
- —
- commit_hash
- ccd676ca79aa783e9e52de213a5619265ec9a8d2
- source_type
- github
- headline
- i386: Split DI<->V2DI patterns before reload with -m32.
- tldr
- 32-bit x86 SSE2 code generation for DI<->V2DI transfers now avoids unnecessary stack usage.
- author
- Roger Sayle
- outcome
- committed
- performance_win
- true
- breaking_change
- false
- series_id
- —
- series_parts
- []
- tags
-
- • i386
- • sse2
- • optimization
- • backend
- discussion_id_link
- —
- bugzilla_pr
- —
- date
- 2026-07-21T00:00:00.000Z
This commit refactors the i386 backend to split patterns for transferring data between DI and V2DI types before the reload pass when compiling for 32-bit targets with SSE2 support. Previously, these operations could involve inefficient stack usage. The change introduces explicit handling of high and low parts of registers, leading to more direct and performant code, as demonstrated by improvements in test cases involving vector extracts and concatenations.