diff options
author | Benjamin Maxwell <benjamin.maxwell@arm.com> | 2025-09-26 10:08:10 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-09-26 10:08:10 +0100 |
commit | d357e965af90cbcfcd717e9d82502bda68f10d5e (patch) | |
tree | ed565c063be9120cf112ca1dcdbd689c2f497269 /llvm/lib/CodeGen/MachineBasicBlock.cpp | |
parent | 656707086e5f6fccd2eb57f5aaf987c328c0f4f1 (diff) | |
download | llvm-d357e965af90cbcfcd717e9d82502bda68f10d5e.zip llvm-d357e965af90cbcfcd717e9d82502bda68f10d5e.tar.gz llvm-d357e965af90cbcfcd717e9d82502bda68f10d5e.tar.bz2 |
[RegisterCoalescer] Mark implicit-defs of super-registers as dead in remat (#159110)
Currently, something like:
```
$eax = MOV32ri -11, implicit-def $rax
%al = COPY $eax
```
Can be rematerialized as:
```
dead $eax = MOV32ri -11, implicit-def $rax
```
Which marks the full $rax as used, not just $al.
With this change, this is rematerialized as:
```
dead $eax = MOV32ri -11, implicit-def dead $rax, implicit-def $al
```
To indicate that only $al is used.
Note: This issue is latent right now, but is exposed when #134408 is
applied, as it results in the register pressure being incorrectly
calculated (unless this patch is applied too).
I think this change is in line with past fixes in this area, notably:
https://github.com/llvm/llvm-project/commit/059cead5ed7aa11ce1eae0bcc751ea0d1e23ea75
https://github.com/llvm/llvm-project/commit/69cd121dd9945429b565b6a5eb8719130de880a7
Diffstat (limited to 'llvm/lib/CodeGen/MachineBasicBlock.cpp')
0 files changed, 0 insertions, 0 deletions