diff --git a/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp b/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp index 2844b8348027b..dbd54f8bbbb14 100644 --- a/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp +++ b/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp @@ -1933,10 +1933,8 @@ void VPWidenSelectRecipe::execute(VPTransformState &State) { // loop. This means that we can't just use the original 'cond' value. // We have to take the 'vectorized' value and pick the first lane. // Instcombine will make this a no-op. - auto *InvarCond = - isInvariantCond() ? State.get(getCond(), VPLane(0)) : nullptr; + Value *Cond = State.get(getCond(), isInvariantCond()); - Value *Cond = InvarCond ? InvarCond : State.get(getCond()); Value *Op0 = State.get(getOperand(1)); Value *Op1 = State.get(getOperand(2)); Value *Sel = State.Builder.CreateSelect(Cond, Op0, Op1); @@ -2496,18 +2494,14 @@ void VPWidenGEPRecipe::execute(VPTransformState &State) { // produce a vector of pointers unless VF is scalar. // The pointer operand of the new GEP. If it's loop-invariant, we // won't broadcast it. - auto *Ptr = isPointerLoopInvariant() ? State.get(getOperand(0), VPLane(0)) - : State.get(getOperand(0)); + auto *Ptr = State.get(getOperand(0), isPointerLoopInvariant()); // Collect all the indices for the new GEP. If any index is // loop-invariant, we won't broadcast it. SmallVector Indices; for (unsigned I = 1, E = getNumOperands(); I < E; I++) { VPValue *Operand = getOperand(I); - if (isIndexLoopInvariant(I - 1)) - Indices.push_back(State.get(Operand, VPLane(0))); - else - Indices.push_back(State.get(Operand)); + Indices.push_back(State.get(Operand, isIndexLoopInvariant(I - 1))); } // Create the new GEP. Note that this GEP may be a scalar if VF == 1,