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.