diff options
author | Matthias Braun <matze@braunis.de> | 2018-02-02 00:08:19 +0000 |
---|---|---|
committer | Matthias Braun <matze@braunis.de> | 2018-02-02 00:08:19 +0000 |
commit | ca0abaebfbfc45ef35de71d0a8c614c82c7cba29 (patch) | |
tree | 09ee7744e015d5d5c357e5db83726fd4e81e6885 /llvm/lib/Transforms/Vectorize/LoopVectorizationPlanner.h | |
parent | 3e0e7cd922c3b6ee5e8ebe33c54d4636d0e4e577 (diff) | |
download | bcm5719-llvm-ca0abaebfbfc45ef35de71d0a8c614c82c7cba29.tar.gz bcm5719-llvm-ca0abaebfbfc45ef35de71d0a8c614c82c7cba29.zip |
SplitKit: Fix liveness recomputation in some remat cases.
Example situation:
```
BB0:
%0 = ...
use %0
; ...
condjump BB1
jmp BB2
BB1:
%0 = ... ; rematerialized def from above (from earlier split step)
jmp BB2
BB2:
; ...
use %0
```
%0 will have a live interval with 3 value numbers (for the BB0, BB1 and
BB2 parts). Now SplitKit tries and succeeds in rematerializing the value
number in BB2 (This only works because it is a secondary split so
SplitKit is can trace this back to a single original def).
We need to recompute all live ranges affected by a value number that we
rematerialize. The case that we missed before is that when the value
that is rematerialized is at a join (Phi VNI) then we also have to
recompute liveness for the predecessor VNIs.
rdar://35699130
Differential Revision: https://reviews.llvm.org/D42667
llvm-svn: 324039
Diffstat (limited to 'llvm/lib/Transforms/Vectorize/LoopVectorizationPlanner.h')
0 files changed, 0 insertions, 0 deletions