[all-commits] [llvm/llvm-project] 32ec6d: [SCEV] Make invalidation in SCEVCallbackVH more th...
Nikita Popov via All-commits
all-commits at lists.llvm.org
Tue Oct 10 01:56:09 PDT 2023
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 32ec6d91a120334d94c1a36764f0bf82a57bb3bb
https://github.com/llvm/llvm-project/commit/32ec6d91a120334d94c1a36764f0bf82a57bb3bb
Author: Nikita Popov <npopov at redhat.com>
Date: 2023-10-10 (Tue, 10 Oct 2023)
Changed paths:
M llvm/lib/Analysis/ScalarEvolution.cpp
M llvm/test/Transforms/IndVarSimplify/elim-extend.ll
A llvm/test/Transforms/LoopSimplify/pr68285.ll
Log Message:
-----------
[SCEV] Make invalidation in SCEVCallbackVH more thorough (#68316)
When a SCEVCallbackVH is RAUWed, we currently do a def-use walk and
remove dependent instructions from the ValueExprMap. However, unlike
SCEVs usual invalidation, this does not forget memoized values.
The end result is that we might end up removing a SCEVUnknown from the
map, while that expression still has users. Due to that, we may later
fail to invalide those expressions. In particular, invalidation of loop
dispositions only does something if there is an expression for the
value, which would not be the case here.
Fix this by using the standard forgetValue() API, instead of rolling a
custom variant.
Fixes https://github.com/llvm/llvm-project/issues/68285.
More information about the All-commits
mailing list