From 9324e1be07f3cd99a8714df227640c34e0ba5994 Mon Sep 17 00:00:00 2001 From: Nuno Lopes Date: Thu, 20 Jul 2023 08:14:43 +0100 Subject: [PATCH] [InstCombineVectorOps] Use poison instead of undef as placeholder [NFC] Undef was being used to populate unused vector lanes. While at it, switch extractelement to use poison as the OOB value (per LangRef) --- llvm/lib/Transforms/InstCombine/InstCombineVectorOps.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/llvm/lib/Transforms/InstCombine/InstCombineVectorOps.cpp b/llvm/lib/Transforms/InstCombine/InstCombineVectorOps.cpp index ae18e2c3..4a5ffef 100644 --- a/llvm/lib/Transforms/InstCombine/InstCombineVectorOps.cpp +++ b/llvm/lib/Transforms/InstCombine/InstCombineVectorOps.cpp @@ -546,7 +546,7 @@ Instruction *InstCombinerImpl::visitExtractElementInst(ExtractElementInst &EI) { ->getNumElements(); if (SrcIdx < 0) - return replaceInstUsesWith(EI, UndefValue::get(EI.getType())); + return replaceInstUsesWith(EI, PoisonValue::get(EI.getType())); if (SrcIdx < (int)LHSWidth) Src = SVI->getOperand(0); else { @@ -1480,10 +1480,10 @@ static Instruction *foldConstantInsEltIntoShuffle(InsertElementInst &InsElt) { } ++ValI; } - // Remaining values are filled with 'undef' values. + // Remaining values are filled with 'poison' values. for (unsigned I = 0; I < NumElts; ++I) { if (!Values[I]) { - Values[I] = UndefValue::get(InsElt.getType()->getElementType()); + Values[I] = PoisonValue::get(InsElt.getType()->getElementType()); Mask[I] = I; } } @@ -1704,7 +1704,7 @@ Instruction *InstCombinerImpl::visitInsertElementInst(InsertElementInst &IE) { if (LR.first != &IE && LR.second != &IE) { // We now have a shuffle of LHS, RHS, Mask. if (LR.second == nullptr) - LR.second = UndefValue::get(LR.first->getType()); + LR.second = PoisonValue::get(LR.first->getType()); return new ShuffleVectorInst(LR.first, LR.second, Mask); } } -- 2.7.4