[LCG] During the incremental re-build of an SCC after removing an edge,
authorChandler Carruth <chandlerc@gmail.com>
Fri, 25 Apr 2014 09:08:10 +0000 (09:08 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Fri, 25 Apr 2014 09:08:10 +0000 (09:08 +0000)
commit7b7a21b1920864b8b80e8984a9d698992921aba0
treef4371c4f88353fc36a718168f968960b4debd6d5
parentcea05a55a24ff34de7e550dd55e0149310d0db7f
[LCG] During the incremental re-build of an SCC after removing an edge,
remove the nodes in the SCC from the SCC map entirely prior to the DFS
walk. This allows the SCC map to represent both the state of
not-yet-re-added-to-an-SCC and added-back-to-this-SCC independently. The
first is being missing from the SCC map, the second is mapping back to
'this'. In a subsequent commit, I'm going to use this property to
simplify the new node list for this SCC.

In theory, I think this also makes the contract for orphaning a node
from the graph slightly less confusing. Now it is also orphaned from the
SCC graph. Still, this isn't quite right either, and so I'm not adding
test cases here. I'll add test cases for the behavior of orphaning nodes
when the code *actually* supports it. The change here is mostly
incidental, my goal is simplifying the algorithm.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207213 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Analysis/LazyCallGraph.cpp