aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorDenis Antrushin <dantrushin@gmail.com>2022-06-08 20:53:54 +0700
committerDenis Antrushin <dantrushin@gmail.com>2022-06-14 10:52:32 +0300
commitc0e965e222900e1fdee417a73242e408943d9fb0 (patch)
tree49a5043e9e7947d0fae881aaf6c217db345a48a1 /clang/lib/Frontend/CompilerInvocation.cpp
parent24bd47dc172f5dc81de7baac880c55b1e615fa70 (diff)
downloadllvm-c0e965e222900e1fdee417a73242e408943d9fb0.zip
llvm-c0e965e222900e1fdee417a73242e408943d9fb0.tar.gz
llvm-c0e965e222900e1fdee417a73242e408943d9fb0.tar.bz2
[Statepoints] FixupStatepoint: Clear isKill flag if COPY is not deleted.
When spilling CSRs, FixupStatepoint pass does simple copy propagation, trying to find COPY instruction which defines register being spilled and spill COPY source instead. I.e., if we have CSR $x and found $x = COPY $y we will spill $y instead. But we may be unable to delete COPY instruction for some reason. Then, spill will be inserted after it, adding another use of $y. If COPY instruction was last use of $y (killed it), after insertion of the spill it is not, so `isKill` flag must be cleared. We failed to do so and this patch fixes this issue. Reviewed By: skatkov Differential Revision: https://reviews.llvm.org/D127308
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions