diff --git a/llvm/lib/Transforms/Scalar/LowerMatrixIntrinsics.cpp b/llvm/lib/Transforms/Scalar/LowerMatrixIntrinsics.cpp --- a/llvm/lib/Transforms/Scalar/LowerMatrixIntrinsics.cpp +++ b/llvm/lib/Transforms/Scalar/LowerMatrixIntrinsics.cpp @@ -254,13 +254,13 @@ return Vectors.size(); else { assert(Vectors.size() > 0 && "Cannot call getNumRows without columns"); - return cast(Vectors[0]->getType())->getNumElements(); + return cast(Vectors[0]->getType())->getNumElements(); } } unsigned getNumRows() const { if (isColumnMajor()) { assert(Vectors.size() > 0 && "Cannot call getNumRows without columns"); - return cast(Vectors[0]->getType())->getNumElements(); + return cast(Vectors[0]->getType())->getNumElements(); } else return Vectors.size(); } @@ -401,7 +401,7 @@ unsigned getNumOps(Type *VT) { assert(isa(VT) && "Expected vector type"); return getNumOps(VT->getScalarType(), - cast(VT)->getNumElements()); + cast(VT)->getNumElements()); } // @@ -421,7 +421,8 @@ IRBuilder<> &Builder) { VectorType *VType = dyn_cast(MatrixVal->getType()); assert(VType && "MatrixVal must be a vector type"); - assert(VType->getNumElements() == SI.NumRows * SI.NumColumns && + assert(cast(VType)->getNumElements() == + SI.NumRows * SI.NumColumns && "The vector size must match the number of matrix elements"); // Check if we lowered MatrixVal using shape information. In that case, @@ -442,7 +443,8 @@ // Otherwise split MatrixVal. SmallVector SplitVecs; Value *Undef = UndefValue::get(VType); - for (unsigned MaskStart = 0; MaskStart < VType->getNumElements(); + for (unsigned MaskStart = 0; + MaskStart < cast(VType)->getNumElements(); MaskStart += SI.getStride()) { Value *V = Builder.CreateShuffleVector( MatrixVal, Undef, createSequentialMask(MaskStart, SI.getStride(), 0), @@ -928,8 +930,8 @@ // First, bring Block to the same size as Col unsigned BlockNumElts = - cast(Block->getType())->getNumElements(); - unsigned NumElts = cast(Col->getType())->getNumElements(); + cast(Block->getType())->getNumElements(); + unsigned NumElts = cast(Col->getType())->getNumElements(); assert(NumElts >= BlockNumElts && "Too few elements for current block"); Value *Undef = UndefValue::get(Block->getType()); @@ -944,7 +946,8 @@ for (i = 0; i < I; i++) Mask.push_back(i); - unsigned VecNumElts = cast(Col->getType())->getNumElements(); + unsigned VecNumElts = + cast(Col->getType())->getNumElements(); for (; i < I + BlockNumElts; i++) Mask.push_back(i - I + VecNumElts); diff --git a/llvm/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp b/llvm/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp --- a/llvm/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp +++ b/llvm/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp @@ -1352,7 +1352,8 @@ auto AS = Ty->getScalarType()->getPointerAddressSpace(); Type *NewTy = Type::getInt8PtrTy(M->getContext(), AS); if (auto *VT = dyn_cast(Ty)) - NewTy = FixedVectorType::get(NewTy, VT->getNumElements()); + NewTy = FixedVectorType::get(NewTy, + cast(VT)->getNumElements()); return Intrinsic::getDeclaration(M, Intrinsic::experimental_gc_relocate, {NewTy}); }; @@ -2667,8 +2668,9 @@ unsigned VF = 0; for (unsigned i = 0; i < I.getNumOperands(); i++) if (auto *OpndVTy = dyn_cast(I.getOperand(i)->getType())) { - assert(VF == 0 || VF == OpndVTy->getNumElements()); - VF = OpndVTy->getNumElements(); + assert(VF == 0 || + VF == cast(OpndVTy)->getNumElements()); + VF = cast(OpndVTy)->getNumElements(); } // It's the vector to scalar traversal through the pointer operand which diff --git a/llvm/lib/Transforms/Scalar/SROA.cpp b/llvm/lib/Transforms/Scalar/SROA.cpp --- a/llvm/lib/Transforms/Scalar/SROA.cpp +++ b/llvm/lib/Transforms/Scalar/SROA.cpp @@ -1470,7 +1470,7 @@ } APInt ElementSize(Offset.getBitWidth(), ElementSizeInBits / 8); APInt NumSkippedElements = Offset.sdiv(ElementSize); - if (NumSkippedElements.ugt(VecTy->getNumElements())) + if (NumSkippedElements.ugt(cast(VecTy)->getNumElements())) return nullptr; Offset -= NumSkippedElements * ElementSize; Indices.push_back(IRB.getInt(NumSkippedElements)); @@ -1799,12 +1799,13 @@ std::max(S.beginOffset(), P.beginOffset()) - P.beginOffset(); uint64_t BeginIndex = BeginOffset / ElementSize; if (BeginIndex * ElementSize != BeginOffset || - BeginIndex >= Ty->getNumElements()) + BeginIndex >= cast(Ty)->getNumElements()) return false; uint64_t EndOffset = std::min(S.endOffset(), P.endOffset()) - P.beginOffset(); uint64_t EndIndex = EndOffset / ElementSize; - if (EndIndex * ElementSize != EndOffset || EndIndex > Ty->getNumElements()) + if (EndIndex * ElementSize != EndOffset || + EndIndex > cast(Ty)->getNumElements()) return false; assert(EndIndex > BeginIndex && "Empty vector!"); @@ -1930,7 +1931,8 @@ "All non-integer types eliminated!"); assert(LHSTy->getElementType()->isIntegerTy() && "All non-integer types eliminated!"); - return RHSTy->getNumElements() < LHSTy->getNumElements(); + return cast(RHSTy)->getNumElements() < + cast(LHSTy)->getNumElements(); }; llvm::sort(CandidateTys, RankVectorTypes); CandidateTys.erase( @@ -2173,7 +2175,7 @@ static Value *extractVector(IRBuilderTy &IRB, Value *V, unsigned BeginIndex, unsigned EndIndex, const Twine &Name) { - VectorType *VecTy = cast(V->getType()); + auto *VecTy = cast(V->getType()); unsigned NumElements = EndIndex - BeginIndex; assert(NumElements <= VecTy->getNumElements() && "Too many elements!"); @@ -2211,21 +2213,23 @@ return V; } - assert(Ty->getNumElements() <= VecTy->getNumElements() && + assert(cast(Ty)->getNumElements() <= + cast(VecTy)->getNumElements() && "Too many elements!"); - if (Ty->getNumElements() == VecTy->getNumElements()) { + if (cast(Ty)->getNumElements() == + cast(VecTy)->getNumElements()) { assert(V->getType() == VecTy && "Vector type mismatch"); return V; } - unsigned EndIndex = BeginIndex + Ty->getNumElements(); + unsigned EndIndex = BeginIndex + cast(Ty)->getNumElements(); // When inserting a smaller vector into the larger to store, we first // use a shuffle vector to widen it with undef elements, and then // a second shuffle vector to select between the loaded vector and the // incoming vector. SmallVector Mask; - Mask.reserve(VecTy->getNumElements()); - for (unsigned i = 0; i != VecTy->getNumElements(); ++i) + Mask.reserve(cast(VecTy)->getNumElements()); + for (unsigned i = 0; i != cast(VecTy)->getNumElements(); ++i) if (i >= BeginIndex && i < EndIndex) Mask.push_back(IRB.getInt32(i - BeginIndex)); else @@ -2235,7 +2239,7 @@ LLVM_DEBUG(dbgs() << " shuffle: " << *V << "\n"); Mask.clear(); - for (unsigned i = 0; i != VecTy->getNumElements(); ++i) + for (unsigned i = 0; i != cast(VecTy)->getNumElements(); ++i) Mask.push_back(IRB.getInt1(i >= BeginIndex && i < EndIndex)); V = IRB.CreateSelect(ConstantVector::get(Mask), V, Old, Name + "blend"); @@ -2595,7 +2599,8 @@ unsigned EndIndex = getIndex(NewEndOffset); assert(EndIndex > BeginIndex && "Empty vector!"); unsigned NumElements = EndIndex - BeginIndex; - assert(NumElements <= VecTy->getNumElements() && "Too many elements!"); + assert(NumElements <= cast(VecTy)->getNumElements() && + "Too many elements!"); Type *SliceTy = (NumElements == 1) ? ElementTy : FixedVectorType::get(ElementTy, NumElements); @@ -2819,7 +2824,8 @@ unsigned EndIndex = getIndex(NewEndOffset); assert(EndIndex > BeginIndex && "Empty vector!"); unsigned NumElements = EndIndex - BeginIndex; - assert(NumElements <= VecTy->getNumElements() && "Too many elements!"); + assert(NumElements <= cast(VecTy)->getNumElements() && + "Too many elements!"); Value *Splat = getIntegerSplat( II.getValue(), DL.getTypeSizeInBits(ElementTy).getFixedSize() / 8); @@ -2858,7 +2864,8 @@ V = getIntegerSplat(II.getValue(), DL.getTypeSizeInBits(ScalarTy).getFixedSize() / 8); if (VectorType *AllocaVecTy = dyn_cast(AllocaTy)) - V = getVectorSplat(V, AllocaVecTy->getNumElements()); + V = getVectorSplat( + V, cast(AllocaVecTy)->getNumElements()); V = convertValue(DL, IRB, V, AllocaTy); } @@ -3617,7 +3624,7 @@ } else { // FIXME: This isn't right for vectors with non-byte-sized or // non-power-of-two sized elements. - auto *VT = cast(Ty); + auto *VT = cast(Ty); ElementTy = VT->getElementType(); TyNumElements = VT->getNumElements(); } diff --git a/llvm/lib/Transforms/Scalar/Scalarizer.cpp b/llvm/lib/Transforms/Scalar/Scalarizer.cpp --- a/llvm/lib/Transforms/Scalar/Scalarizer.cpp +++ b/llvm/lib/Transforms/Scalar/Scalarizer.cpp @@ -262,7 +262,7 @@ PtrTy = dyn_cast(Ty); if (PtrTy) Ty = PtrTy->getElementType(); - Size = cast(Ty)->getNumElements(); + Size = cast(Ty)->getNumElements(); if (!CachePtr) Tmp.resize(Size, nullptr); else if (CachePtr->empty()) @@ -465,7 +465,7 @@ if (!VT) return false; - unsigned NumElems = VT->getNumElements(); + unsigned NumElems = cast(VT)->getNumElements(); IRBuilder<> Builder(&I); Scatterer Op = scatter(&I, I.getOperand(0)); assert(Op.size() == NumElems && "Mismatched unary operation"); @@ -485,7 +485,7 @@ if (!VT) return false; - unsigned NumElems = VT->getNumElements(); + unsigned NumElems = cast(VT)->getNumElements(); IRBuilder<> Builder(&I); Scatterer VOp0 = scatter(&I, I.getOperand(0)); Scatterer VOp1 = scatter(&I, I.getOperand(1)); @@ -528,7 +528,7 @@ if (ID == Intrinsic::not_intrinsic || !isTriviallyScalariable(ID)) return false; - unsigned NumElems = VT->getNumElements(); + unsigned NumElems = cast(VT)->getNumElements(); unsigned NumArgs = CI.getNumArgOperands(); ValueVector ScalarOperands(NumArgs); @@ -578,7 +578,7 @@ if (!VT) return false; - unsigned NumElems = VT->getNumElements(); + unsigned NumElems = cast(VT)->getNumElements(); IRBuilder<> Builder(&SI); Scatterer VOp1 = scatter(&SI, SI.getOperand(1)); Scatterer VOp2 = scatter(&SI, SI.getOperand(2)); @@ -632,7 +632,7 @@ return false; IRBuilder<> Builder(&GEPI); - unsigned NumElems = VT->getNumElements(); + unsigned NumElems = cast(VT)->getNumElements(); unsigned NumIndices = GEPI.getNumIndices(); // The base pointer might be scalar even if it's a vector GEP. In those cases, @@ -677,7 +677,7 @@ if (!VT) return false; - unsigned NumElems = VT->getNumElements(); + unsigned NumElems = cast(VT)->getNumElements(); IRBuilder<> Builder(&CI); Scatterer Op0 = scatter(&CI, CI.getOperand(0)); assert(Op0.size() == NumElems && "Mismatched cast"); @@ -696,8 +696,8 @@ if (!DstVT || !SrcVT) return false; - unsigned DstNumElems = DstVT->getNumElements(); - unsigned SrcNumElems = SrcVT->getNumElements(); + unsigned DstNumElems = cast(DstVT)->getNumElements(); + unsigned SrcNumElems = cast(SrcVT)->getNumElements(); IRBuilder<> Builder(&BCI); Scatterer Op0 = scatter(&BCI, BCI.getOperand(0)); ValueVector Res; @@ -750,7 +750,7 @@ if (!VT) return false; - unsigned NumElems = VT->getNumElements(); + unsigned NumElems = cast(VT)->getNumElements(); IRBuilder<> Builder(&IEI); Scatterer Op0 = scatter(&IEI, IEI.getOperand(0)); Value *NewElt = IEI.getOperand(1); @@ -785,7 +785,7 @@ if (!VT) return false; - unsigned NumSrcElems = VT->getNumElements(); + unsigned NumSrcElems = cast(VT)->getNumElements(); IRBuilder<> Builder(&EEI); Scatterer Op0 = scatter(&EEI, EEI.getOperand(0)); Value *ExtIdx = EEI.getOperand(1); @@ -817,7 +817,7 @@ if (!VT) return false; - unsigned NumElems = VT->getNumElements(); + unsigned NumElems = cast(VT)->getNumElements(); Scatterer Op0 = scatter(&SVI, SVI.getOperand(0)); Scatterer Op1 = scatter(&SVI, SVI.getOperand(1)); ValueVector Res; @@ -841,7 +841,7 @@ if (!VT) return false; - unsigned NumElems = VT->getNumElements(); + unsigned NumElems = cast(VT)->getNumElements(); IRBuilder<> Builder(&PHI); ValueVector Res; Res.resize(NumElems); @@ -872,7 +872,7 @@ if (!Layout) return false; - unsigned NumElems = Layout->VecTy->getNumElements(); + unsigned NumElems = cast(Layout->VecTy)->getNumElements(); IRBuilder<> Builder(&LI); Scatterer Ptr = scatter(&LI, LI.getPointerOperand()); ValueVector Res; @@ -898,7 +898,7 @@ if (!Layout) return false; - unsigned NumElems = Layout->VecTy->getNumElements(); + unsigned NumElems = cast(Layout->VecTy)->getNumElements(); IRBuilder<> Builder(&SI); Scatterer VPtr = scatter(&SI, SI.getPointerOperand()); Scatterer VVal = scatter(&SI, FullValue); @@ -934,7 +934,7 @@ Value *Res = UndefValue::get(Op->getType()); if (auto *Ty = dyn_cast(Op->getType())) { BasicBlock *BB = Op->getParent(); - unsigned Count = Ty->getNumElements(); + unsigned Count = cast(Ty)->getNumElements(); IRBuilder<> Builder(Op); if (isa(Op)) Builder.SetInsertPoint(BB, BB->getFirstInsertionPt());