I tried raising the question if a SCEV expression should be analyzable even if part of the underlaying IR has been removed on llvm-dev without much response.
http://lists.llvm.org/pipermail/llvm-dev/2020-November/146636.html
This review is to take it one step further to see if that gives some reaction.
So my, possibly controversial, suggestion is that yes SCEV expressions should be analyzable even though part of the IR that was analyzed to build it has later been removed. Obviously the IR that can be removed is only the part that SCEV has already successfully "analyzed through" so if any SCEVUnknown points at IR that has been removed (i.e. the value pointer has been nulled) then the SCEV expression can no longer be analyzed.
This review adds a function ScalarEvolution::hasNulledUnknown to determine if a SCEV expression can still be analyzed or not.
For background see the llvm-dev post above.
clang-tidy: warning: 'auto U' can be declared as 'const auto *U' [llvm-qualified-auto]
not useful