[LCG] Completely remove the parent set and leaf tracking for RefSCCs.
authorChandler Carruth <chandlerc@gmail.com>
Sat, 5 Aug 2017 07:37:00 +0000 (07:37 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Sat, 5 Aug 2017 07:37:00 +0000 (07:37 +0000)
commitadbf14ab859fb0782a5667dd2c5b669a3e2b362f
treea711d3252837e22cb82f8e83cdf0244a3bcbdb34
parent38bd6b50ef500c2bf166593712443c609a3356ba
[LCG] Completely remove the parent set and leaf tracking for RefSCCs.

After the previous series of patches, this is now trivial and deletes
a pretty astonishing amount of complexity. This has been a long time
coming, as the move toward a PO sequence of RefSCCs started eroding the
underlying use cases for this half of the data structure.

Among the biggest advantages here is that now there aren't two
independent data structures that need to stay in sync.

Some of my profiling has also indicated that updating the parent sets
was among the most expensive parts of the lazy call graph. Eliminating
it whole sale is likely to be a nice win in terms of compile time.

Last but not least, I had discussed with some folks previously keeping
it around for asserts and other correctness checking, but once the
fundamentals of the parent and child checking were implemented without
the parent sets their value in correctness checking was tiny and no
where near worth the cost of the complexity required to keep everything
up-to-date.

llvm-svn: 310171
llvm/include/llvm/Analysis/LazyCallGraph.h
llvm/lib/Analysis/LazyCallGraph.cpp