aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp
diff options
context:
space:
mode:
authorNikita Popov <npopov@redhat.com>2023-04-27 09:36:35 +0200
committerNikita Popov <npopov@redhat.com>2023-04-28 14:42:08 +0200
commit3ddd1ffb721dd0ac3faa4a53c76b6904e862b7ab (patch)
treee1787b7b012b62a467994bef070c0d11b770748e /llvm/lib/Transforms/Utils/BasicBlockUtils.cpp
parent0659000ff79decc1173aac140d4b0325fe696c57 (diff)
downloadllvm-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