Don't eliminate a partially redundant load if it's in a landing pad.
authorBill Wendling <isanbard@gmail.com>
Mon, 21 Oct 2013 04:09:17 +0000 (04:09 +0000)
committerBill Wendling <isanbard@gmail.com>
Mon, 21 Oct 2013 04:09:17 +0000 (04:09 +0000)
commit3e033f29239e48c190f29cdf3a02cdfbaf2fe72b
tree6022b73253983a58bc69e4a9f9b8c764a0b1cfee
parent365f4fa6cb9ef2e87483219784349008e6d20ae9
Don't eliminate a partially redundant load if it's in a landing pad.

A landing pad can be jumped to only by the unwind edge of an invoke
instruction. If we eliminate a partially redundant load in a landing pad, it
will create a basic block that violates this constraint. It then leads to other
problems down the line if it tries to merge that basic block with the landing
pad. Avoid this by not eliminating the load in a landing pad.

PR17621

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193064 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/Scalar/JumpThreading.cpp
lib/Transforms/Utils/Local.cpp
test/Transforms/JumpThreading/landing-pad-splicing.ll [deleted file]
test/Transforms/JumpThreading/landing-pad.ll [new file with mode: 0644]