diff options
author | David Majnemer <david.majnemer@gmail.com> | 2016-08-04 04:24:02 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2016-08-04 04:24:02 +0000 |
commit | 909793fa63414e6928cbd56c7f3b1171d55460a7 (patch) | |
tree | 5b3ae38da7a848a29bbde0990d7a338a1f5c3f39 /llvm/lib/Analysis/InstructionSimplify.cpp | |
parent | bd887581fc9de107f157efaea8702f71ddfed0ea (diff) | |
download | bcm5719-llvm-909793fa63414e6928cbd56c7f3b1171d55460a7.tar.gz bcm5719-llvm-909793fa63414e6928cbd56c7f3b1171d55460a7.zip |
Reinstate "[CloneFunction] Don't remove side effecting calls"
This reinstates r277611 + r277614 and reverts r277642. A cast_or_null
should have been a dyn_cast_or_null.
llvm-svn: 277691
Diffstat (limited to 'llvm/lib/Analysis/InstructionSimplify.cpp')
-rw-r--r-- | llvm/lib/Analysis/InstructionSimplify.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/llvm/lib/Analysis/InstructionSimplify.cpp b/llvm/lib/Analysis/InstructionSimplify.cpp index 5b723e59742..ac03fdc86e6 100644 --- a/llvm/lib/Analysis/InstructionSimplify.cpp +++ b/llvm/lib/Analysis/InstructionSimplify.cpp @@ -4356,7 +4356,8 @@ static bool replaceAndRecursivelySimplifyImpl(Instruction *I, Value *SimpleV, // Gracefully handle edge cases where the instruction is not wired into any // parent block. - if (I->getParent()) + if (I->getParent() && !I->isEHPad() && !isa<TerminatorInst>(I) && + !I->mayHaveSideEffects()) I->eraseFromParent(); } else { Worklist.insert(I); @@ -4384,7 +4385,8 @@ static bool replaceAndRecursivelySimplifyImpl(Instruction *I, Value *SimpleV, // Gracefully handle edge cases where the instruction is not wired into any // parent block. - if (I->getParent()) + if (I->getParent() && !I->isEHPad() && !isa<TerminatorInst>(I) && + !I->mayHaveSideEffects()) I->eraseFromParent(); } return Simplified; |