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.