diff options
Diffstat (limited to 'llvm/lib/Analysis/InstructionSimplify.cpp')
| -rw-r--r-- | llvm/lib/Analysis/InstructionSimplify.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/InstructionSimplify.cpp b/llvm/lib/Analysis/InstructionSimplify.cpp index cb1dae92faf9..90baa054eed4 100644 --- a/llvm/lib/Analysis/InstructionSimplify.cpp +++ b/llvm/lib/Analysis/InstructionSimplify.cpp @@ -6793,6 +6793,9 @@ static Value *simplifyIntrinsic(CallBase *Call, Value *Callee, Function *F = cast<Function>(Callee); Intrinsic::ID IID = F->getIntrinsicID(); + if (IID != Intrinsic::not_intrinsic && intrinsicPropagatesPoison(IID) && + any_of(Args, IsaPred<PoisonValue>)) + return PoisonValue::get(F->getReturnType()); // Most of the intrinsics with no operands have some kind of side effect. // Don't simplify. if (!NumOperands) { |
