aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Analysis/ValueTracking.cpp
diff options
context:
space:
mode:
authorNikita Popov <npopov@redhat.com>2023-12-21 15:16:55 +0100
committerNikita Popov <npopov@redhat.com>2023-12-21 15:21:23 +0100
commite414ba33b44971d47d24d75b7da94898d2cc8bde (patch)
treed5d30ba544b71a9c03ed64b4fdb8f65d9d2d4145 /llvm/lib/Analysis/ValueTracking.cpp
parent5992ce90b8c0fac06436c3c86621fbf6d5398ee5 (diff)
downloadllvm-e414ba33b44971d47d24d75b7da94898d2cc8bde.zip
llvm-e414ba33b44971d47d24d75b7da94898d2cc8bde.tar.gz
llvm-e414ba33b44971d47d24d75b7da94898d2cc8bde.tar.bz2
[ValueTracking] Shufflevector produces poison rather than undef
Shufflevector semantics have changed so that poison mask elements return poison rather than undef. Reflect this in the canCreateUndefOrPoison() implementation.
Diffstat (limited to 'llvm/lib/Analysis/ValueTracking.cpp')
-rw-r--r--llvm/lib/Analysis/ValueTracking.cpp3
1 files changed, 0 insertions, 3 deletions
diff --git a/llvm/lib/Analysis/ValueTracking.cpp b/llvm/lib/Analysis/ValueTracking.cpp
index efdb3fc..2ce660b 100644
--- a/llvm/lib/Analysis/ValueTracking.cpp
+++ b/llvm/lib/Analysis/ValueTracking.cpp
@@ -6674,9 +6674,6 @@ static bool canCreateUndefOrPoison(const Operator *Op, bool PoisonOnly,
return false;
}
case Instruction::ShuffleVector: {
- // shufflevector may return undef.
- if (PoisonOnly)
- return false;
ArrayRef<int> Mask = isa<ConstantExpr>(Op)
? cast<ConstantExpr>(Op)->getShuffleMask()
: cast<ShuffleVectorInst>(Op)->getShuffleMask();