Landing: 6a1f0d171ba1

Project / Subsystem

gcc / sh

Date

2024-10-06

Author

Kaz Kojima

Commit

6a1f0d171ba12f3dbddf2f8b7358f8d042195249

Source

github

Perf win

No

Breaking

No

All attributes

project
gcc
subsystem
sh
patch_id
commit_hash
6a1f0d171ba12f3dbddf2f8b7358f8d042195249
source_type
github
headline
SH: Reduce R0 live ranges for LRA with R0-constrained moves
tldr
SH backend reduces R0 live ranges around R0-constrained move instructions to help LRA succeed.
author
Kaz Kojima
outcome
committed
performance_win
false
breaking_change
false
series_id
series_parts
[]
tags
  • sh
  • register allocation
  • optimization
discussion_id_link
bugzilla_pr
date
2024-10-06T00:00:00.000Z

This commit reduces the likelihood of Long-Range Addresser (LRA) failures on the SH architecture by shortening the live ranges of the R0 register around specific move and extend instructions. It achieves this by using instruction variants that explicitly clobber R0 and by splitting moves into two instructions, tricking LRA into using non-R0 registers for operands.