Second attempt at PR12573:
authorBill Wendling <isanbard@gmail.com>
Mon, 30 Apr 2012 10:44:54 +0000 (10:44 +0000)
committerBill Wendling <isanbard@gmail.com>
Mon, 30 Apr 2012 10:44:54 +0000 (10:44 +0000)
commitbfbab99b58aa530d5d6aa886ef66be42a047c756
tree3d4df04901c7bcdba3f3684492c94e74ebd35a6f
parent38da2a8cc1a41147efac423cb97caf3db90f73e7
Second attempt at PR12573:

Allow the "SplitCriticalEdge" function to split the edge to a landing pad. If
the pass is *sure* that it thinks it knows what it's doing, then it may go ahead
and specify that the landing pad can have its critical edge split. The loop
unswitch pass is one of these passes. It will split the critical edges of all
edges coming from a loop to a landing pad not within the loop. Doing so will
retain important loop analysis information, such as loop simplify.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155817 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Transforms/Utils/BasicBlockUtils.h
lib/Transforms/Scalar/LoopUnswitch.cpp
lib/Transforms/Utils/BreakCriticalEdges.cpp
test/Transforms/LoopUnswitch/2012-04-30-LoopUnswitch-LPad-Crash.ll [new file with mode: 0644]