diff options
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/lib/Analysis/ValueTracking.cpp | 3 | ||||
-rw-r--r-- | llvm/unittests/Analysis/ValueTrackingTest.cpp | 8 |
2 files changed, 4 insertions, 7 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(); diff --git a/llvm/unittests/Analysis/ValueTrackingTest.cpp b/llvm/unittests/Analysis/ValueTrackingTest.cpp index 0d3a594..27f6318 100644 --- a/llvm/unittests/Analysis/ValueTrackingTest.cpp +++ b/llvm/unittests/Analysis/ValueTrackingTest.cpp @@ -1177,12 +1177,12 @@ TEST(ValueTracking, canCreatePoisonOrUndef) { {{false, false}, "shufflevector <4 x i32> %vx, <4 x i32> %vx2, " "<4 x i32> <i32 0, i32 1, i32 2, i32 3>"}, - {{false, true}, + {{true, false}, "shufflevector <4 x i32> %vx, <4 x i32> %vx2, " - "<4 x i32> <i32 0, i32 1, i32 2, i32 undef>"}, - {{false, true}, + "<4 x i32> <i32 0, i32 1, i32 2, i32 poison>"}, + {{true, false}, "shufflevector <vscale x 4 x i32> %svx, " - "<vscale x 4 x i32> %svx, <vscale x 4 x i32> undef"}, + "<vscale x 4 x i32> %svx, <vscale x 4 x i32> poison"}, {{true, false}, "call i32 @g(i32 %x)"}, {{false, false}, "call noundef i32 @g(i32 %x)"}, {{true, false}, "fcmp nnan oeq float %fx, %fy"}, |