HomePhabricator

[LCG] Special case when removing a ref edge from a RefSCC leaves that RefSCC…

Authored by chandlerc on Aug 9 2017, 2:14 AM.

Description

[LCG] Special case when removing a ref edge from a RefSCC leaves that RefSCC still connected.

This is common and can be handled much more efficiently. As soon as we
know we've covered every node in the RefSCC with the DFS, we can simply
reset our state and return. This avoids numerous data structure updates
and other complexity.

On top of other changes, this appears to get new PM back to parity with
the old PM for a large protocol buffer message source code. The dense
map updates are very hot in this function.

llvm-svn: 310451

Details