Fix SCEV forgetMemoizedResults should search and destroy backedge exprs.
authorAndrew Trick <atrick@apple.com>
Tue, 26 Mar 2013 03:14:53 +0000 (03:14 +0000)
committerAndrew Trick <atrick@apple.com>
Tue, 26 Mar 2013 03:14:53 +0000 (03:14 +0000)
commite74c2e86cb405963ba9c4043a1d0ca00b8f85fbe
tree5fd5bcbbb92b96454f5a6dc78f4785703feead73
parent7fc162f893d67ffd96fdb19e2eb9a03b4621f0c0
Fix SCEV forgetMemoizedResults should search and destroy backedge exprs.

Fixes PR15570: SEGV: SCEV back-edge info invalid after dead code removal.

Indvars creates a SCEV expression for the loop's back edge taken
count, then determines that the comparison is always true and
removes it.

When loop-unroll asks for the expression, it contains a NULL
SCEVUnknkown (as a CallbackVH).

forgetMemoizedResults should invalidate the loop back edges expression.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177986 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Analysis/ScalarEvolution.h
lib/Analysis/ScalarEvolution.cpp
test/Analysis/ScalarEvolution/scev-invalid.ll [new file with mode: 0644]