Landing: 7b4d5b42a788
Project / Subsystem
gcc / ifcvt
Date
2026-07-22
Author
Kyrylo Tkachov
Commit
7b4d5b42a78859b30c9b48fa0a426effbbd71ff7
Source
github
Perf win
No
Breaking
No
All attributes
- project
- gcc
- subsystem
- ifcvt
- patch_id
- —
- commit_hash
- 7b4d5b42a78859b30c9b48fa0a426effbbd71ff7
- source_type
- github
- headline
- ifcvt: Reject hard-register destinations in multiple sets [PR126184]
- tldr
- ifcvt pass now rejects conversions that involve hard registers with multiple definitions, preventing incorrect code generation.
- author
- Kyrylo Tkachov
- outcome
- committed
- performance_win
- false
- breaking_change
- false
- series_id
- —
- series_parts
- []
- tags
-
- • optimization
- • ifcvt
- • aarch64
- • bugfix
- discussion_id_link
- —
- bugzilla_pr
- —
- date
- 2026-07-22T00:00:00.000Z
The ifcvt optimization pass has been updated to reject rewiring operations that target hard registers when those registers have multiple definitions. This is because an exact RTL replacement cannot accurately represent values from partial or mode-changing definitions of hard registers. An RTL execution test on AArch64 demonstrates that such blocks remain unconverted, ensuring correctness.