Fix branch folding bug for indirect branches: for a block containing only
authorBob Wilson <bob.wilson@apple.com>
Tue, 3 Nov 2009 23:44:31 +0000 (23:44 +0000)
committerBob Wilson <bob.wilson@apple.com>
Tue, 3 Nov 2009 23:44:31 +0000 (23:44 +0000)
commit888acc35a3e271d092f9b1efc7c32b94ff17fbf7
treebece45266deb7f2b2e9d9ab1c2deb067a69c85c7
parentfc36a562aed22490d311c6d0b6d2b7d3430e49a7
Fix branch folding bug for indirect branches: for a block containing only
an unconditional branch (possibly from tail merging), this code is
trying to redirect all of its predecessors to go directly to the branch
target, but that isn't feasible for indirect branches.  The other
predecessors (that don't end with indirect branches) could theoretically
still be handled, but that is not easily done right now.

The AnalyzeBranch interface doesn't currently let us distinguish jump table
branches from indirect branches, and this code is currently handling
jump tables.  To avoid punting on address-taken blocks, we would have to give
up handling jump tables.  That seems like a bad tradeoff.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85975 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/BranchFolding.cpp