Teach SimplifyCFG how to simplify indirectbr instructions.
authorDan Gohman <gohman@apple.com>
Sat, 14 Aug 2010 00:29:42 +0000 (00:29 +0000)
committerDan Gohman <gohman@apple.com>
Sat, 14 Aug 2010 00:29:42 +0000 (00:29 +0000)
commite2c6d131d12c779a410740e0a90545def75e0f48
treee899545fbab9934f663643c00460d582f83819de
parent3d72367d30c9ce6f387764a028763f7a366cc443
Teach SimplifyCFG how to simplify indirectbr instructions.
 - Eliminate redundant successors.
 - Convert an indirectbr with one successor into a direct branch.

Also, generalize SimplifyCFG to be able to be run on a function entry block.
It knows quite a few simplifications which are applicable to the entry
block, and it only needs a few checks to avoid trouble with the entry block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111060 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Transforms/Utils/Local.h
lib/Transforms/Scalar/SimplifyCFGPass.cpp
lib/Transforms/Utils/Local.cpp
lib/Transforms/Utils/SimplifyCFG.cpp
test/Transforms/SimplifyCFG/basictest.ll
test/Transforms/SimplifyCFG/indirectbr.ll [new file with mode: 0644]