When computing reverse-CFG reverse-post-order, skip backedges, as
authorDan Gohman <gohman@apple.com>
Mon, 12 Dec 2011 19:42:25 +0000 (19:42 +0000)
committerDan Gohman <gohman@apple.com>
Mon, 12 Dec 2011 19:42:25 +0000 (19:42 +0000)
commit59a1c93e955c366084742ceca65e7b1afd8772ac
tree660b4fc42b627066d3fe2cfc686a59ddcd642e6b
parent37e7ecf52b2f4e282b58ab81e59adc8b9b4ec336
When computing reverse-CFG reverse-post-order, skip backedges, as
detected in the forward-CFG DFS. This prevents the reverse-CFG from
visiting blocks inside loops after blocks that dominate them in the
case where loops have multiple exits.

No testcase, because this fixes a bug which in practice only shows
up in a full optimizer run, due to the use-list order.

This fixes rdar://10422791 and others.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146408 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/Scalar/ObjCARC.cpp