diff options
author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2023-07-26 07:58:14 -0400 |
---|---|---|
committer | Matt Arsenault <arsenm2@gmail.com> | 2023-10-02 13:33:52 +0300 |
commit | e28708d4f03889214066fba81072f974864b919f (patch) | |
tree | 4b50226e8452f99ac6ce9f493779529288e7cf90 /flang/lib/Frontend/CompilerInvocation.cpp | |
parent | 3f0927368285505ead516ba7572baaa7f52b01a9 (diff) | |
download | llvm-e28708d4f03889214066fba81072f974864b919f.zip llvm-e28708d4f03889214066fba81072f974864b919f.tar.gz llvm-e28708d4f03889214066fba81072f974864b919f.tar.bz2 |
RegisterCoalescer: Avoid redundant implicit-def on rematerialize
If this was coalescing a def of a subregister with a def of the super
register, it was introducing a redundant super-register def and
marking the subregister def as dead.
Resulting in something like:
dead $eax = MOVr0, implicit-def $rax, implicit-def $rax
Avoid this by checking if the new instruction already has the super
def, so we end up with this instead:
dead $eax = MOVr0, implicit-def $rax
The dead flag looks suspicious to me, seems like it's easy to buggily
interpret dead def of subreg and a non-dead def of an aliasing
register. It seems to be intentional though.
https://reviews.llvm.org/D156343
Diffstat (limited to 'flang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions