aboutsummaryrefslogtreecommitdiff
path: root/flang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorMatt Arsenault <Matthew.Arsenault@amd.com>2023-07-26 07:58:14 -0400
committerMatt Arsenault <arsenm2@gmail.com>2023-10-02 13:33:52 +0300
commite28708d4f03889214066fba81072f974864b919f (patch)
tree4b50226e8452f99ac6ce9f493779529288e7cf90 /flang/lib/Frontend/CompilerInvocation.cpp
parent3f0927368285505ead516ba7572baaa7f52b01a9 (diff)
downloadllvm-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