summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2015-11-07 00:52:53 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2015-11-07 00:52:53 +0000
commiteafa28a0d9274d9cdd9f02ac4a42ea9ee76d3313 (patch)
tree10cb94ef46df61b7e0cc925e22fd0b50a2f15fba /llvm/lib
parent48684b073e37211594d0eb0155aea8bb44214e94 (diff)
downloadbcm5719-llvm-eafa28a0d9274d9cdd9f02ac4a42ea9ee76d3313.tar.gz
bcm5719-llvm-eafa28a0d9274d9cdd9f02ac4a42ea9ee76d3313.zip
[InstCombine] Teach FoldPHIArgZextsIntoPHI about EHPads
FoldPHIArgZextsIntoPHI cannot insert an instruction after the PHI if there is an EHPad in the BB. Doing so would result in an instruction inserted after a terminator. llvm-svn: 252377
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Transforms/InstCombine/InstCombinePHI.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/InstCombine/InstCombinePHI.cpp b/llvm/lib/Transforms/InstCombine/InstCombinePHI.cpp
index a9f8f49d2f1..f1aa98b5e35 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombinePHI.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstCombinePHI.cpp
@@ -401,6 +401,12 @@ Instruction *InstCombiner::FoldPHIArgLoadIntoPHI(PHINode &PN) {
/// require special-casing a cast from the 'i1' type. See the comment in
/// FoldPHIArgOpIntoPHI() about pessimizing illegal integer types.
Instruction *InstCombiner::FoldPHIArgZextsIntoPHI(PHINode &Phi) {
+ // We cannot create a new instruction after the PHI if the terminator is an
+ // EHPad because there is no valid insertion point.
+ if (TerminatorInst *TI = Phi.getParent()->getTerminator())
+ if (TI->isEHPad())
+ return nullptr;
+
// Early exit for the common case of a phi with two operands. These are
// handled elsewhere. See the comment below where we check the count of zexts
// and constants for more details.
OpenPOWER on IntegriCloud