diff options
author | Nikita Popov <npopov@redhat.com> | 2023-04-27 09:36:35 +0200 |
---|---|---|
committer | Nikita Popov <npopov@redhat.com> | 2023-04-28 14:42:08 +0200 |
commit | 3ddd1ffb721dd0ac3faa4a53c76b6904e862b7ab (patch) | |
tree | e1787b7b012b62a467994bef070c0d11b770748e /llvm/lib/Transforms/Utils/BasicBlockUtils.cpp | |
parent | 0659000ff79decc1173aac140d4b0325fe696c57 (diff) | |
download | llvm-3ddd1ffb721dd0ac3faa4a53c76b6904e862b7ab.zip llvm-3ddd1ffb721dd0ac3faa4a53c76b6904e862b7ab.tar.gz llvm-3ddd1ffb721dd0ac3faa4a53c76b6904e862b7ab.tar.bz2 |
[SCEV] Don't invalidate past dependency-breaking instructions
When invalidating a value, we walk all users of that value and
invalidate them as well. This can be very expensive for large use
graphs.
However, we only need to invalidate a user U of instruction I if
SCEV(U) can depend on SCEV(I). This is not the case if U is an
instruction that always produces a SCEVUnknown, such as a load.
If the load pointer operand is invalidated, there is no need to
invalidate the load result, which is completely unrelated from a
SCEV perspective.
Differential Revision: https://reviews.llvm.org/D149323
Diffstat (limited to 'llvm/lib/Transforms/Utils/BasicBlockUtils.cpp')
0 files changed, 0 insertions, 0 deletions