[PATCH] D29579: [PM/LCG] Teach LCG to support spurious reference edges.

Chandler Carruth via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Feb 6 02:17:21 PST 2017


chandlerc created this revision.
Herald added a subscriber: mcrosier.

Somewhat amazingly, this only requires teaching it to clean them up when
deleting a dead function from the graph. And we already have exactly the
necessary data structures to do that in the parent RefSCCs.

This allows ArgPromote to work in a much simpler way be merely letting
reference edges linger in the graph after the causing IR is deleted. We
will clean up these edges when we run any function pass over the IR, but
don't remove them eagerly.

This avoids all of the quadratic update issues both in the current pass
manager and in my previous attempt with the new pass manager.

Depends on https://reviews.llvm.org/D29577.


https://reviews.llvm.org/D29579

Files:
  lib/Analysis/LazyCallGraph.cpp
  unittests/Analysis/LazyCallGraphTest.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D29579.87204.patch
Type: text/x-patch
Size: 4240 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170206/f9ee329a/attachment.bin>


More information about the llvm-commits mailing list