Author: Christopher Tetreault Date: 2020-04-17T14:03:31-07:00 New Revision: c858debebc1308e748de882c745e179b1a398fa0
URL: https://github.com/llvm/llvm-project/commit/c858debebc1308e748de882c745e179b1a398fa0 DIFF: https://github.com/llvm/llvm-project/commit/c858debebc1308e748de882c745e179b1a398fa0.diff LOG: Remove asserting getters from base Type Summary: Remove asserting vector getters from Type in preparation for the VectorType refactor. The existence of these functions complicates the refactor while adding little value. Reviewers: dexonsmith, sdesmalen, efriedma Reviewed By: efriedma Subscribers: cfe-commits, hiraditya, llvm-commits Tags: #llvm, #clang Differential Revision: https://reviews.llvm.org/D77278 Added: Modified: clang/lib/CodeGen/CGBuiltin.cpp llvm/include/llvm/IR/DerivedTypes.h llvm/include/llvm/IR/Type.h llvm/lib/CodeGen/CodeGenPrepare.cpp llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp llvm/unittests/IR/VPIntrinsicTest.cpp Removed: ################################################################################ diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp index f4832ef4afb2..8ee69740f15c 100644 --- a/clang/lib/CodeGen/CGBuiltin.cpp +++ b/clang/lib/CodeGen/CGBuiltin.cpp @@ -7573,8 +7573,7 @@ Value *CodeGenFunction::EmitSVEMaskedStore(const CallExpr *E, // The vector type that is stored may be diff erent from the // eventual type stored to memory. auto VectorTy = cast<llvm::VectorType>(Ops.back()->getType()); - auto MemoryTy = - llvm::VectorType::get(MemEltTy, VectorTy->getVectorElementCount()); + auto MemoryTy = llvm::VectorType::get(MemEltTy, VectorTy->getElementCount()); Value *Predicate = EmitSVEPredicateCast(Ops[0], MemoryTy); Value *BasePtr = Builder.CreateBitCast(Ops[1], MemoryTy->getPointerTo()); diff --git a/llvm/include/llvm/IR/DerivedTypes.h b/llvm/include/llvm/IR/DerivedTypes.h index 92017448fe0d..186430754303 100644 --- a/llvm/include/llvm/IR/DerivedTypes.h +++ b/llvm/include/llvm/IR/DerivedTypes.h @@ -531,18 +531,6 @@ class VectorType : public Type { } }; -unsigned Type::getVectorNumElements() const { - return cast<VectorType>(this)->getNumElements(); -} - -bool Type::getVectorIsScalable() const { - return cast<VectorType>(this)->isScalable(); -} - -ElementCount Type::getVectorElementCount() const { - return cast<VectorType>(this)->getElementCount(); -} - bool Type::isVectorTy() const { return isa<VectorType>(this); } /// Class to represent pointers. @@ -597,8 +585,8 @@ Type *Type::getWithNewBitWidth(unsigned NewBitWidth) const { isIntOrIntVectorTy() && "Original type expected to be a vector of integers or a scalar integer."); Type *NewType = getIntNTy(getContext(), NewBitWidth); - if (isVectorTy()) - NewType = VectorType::get(NewType, getVectorElementCount()); + if (auto *VTy = dyn_cast<VectorType>(this)) + NewType = VectorType::get(NewType, VTy->getElementCount()); return NewType; } @@ -606,6 +594,12 @@ unsigned Type::getPointerAddressSpace() const { return cast<PointerType>(getScalarType())->getAddressSpace(); } +Type *Type::getScalarType() const { + if (isVectorTy()) + return cast<VectorType>(this)->getElementType(); + return const_cast<Type *>(this); +} + } // end namespace llvm #endif // LLVM_IR_DERIVEDTYPES_H diff --git a/llvm/include/llvm/IR/Type.h b/llvm/include/llvm/IR/Type.h index 79d6964e3b3e..67be3ef480b7 100644 --- a/llvm/include/llvm/IR/Type.h +++ b/llvm/include/llvm/IR/Type.h @@ -300,11 +300,7 @@ class Type { /// If this is a vector type, return the element type, otherwise return /// 'this'. - Type *getScalarType() const { - if (isVectorTy()) - return getVectorElementType(); - return const_cast<Type*>(this); - } + inline Type *getScalarType() const; //===--------------------------------------------------------------------===// // Type Iteration support. @@ -339,8 +335,8 @@ class Type { //===--------------------------------------------------------------------===// // Helper methods corresponding to subclass methods. This forces a cast to - // the specified subclass and calls its accessor. "getVectorNumElements" (for - // example) is shorthand for cast<VectorType>(Ty)->getNumElements(). This is + // the specified subclass and calls its accessor. "getArrayNumElements" (for + // example) is shorthand for cast<ArrayType>(Ty)->getNumElements(). This is // only intended to cover the core methods that are frequently used, helper // methods should not be added here. @@ -361,14 +357,6 @@ class Type { return ContainedTys[0]; } - inline bool getVectorIsScalable() const; - inline unsigned getVectorNumElements() const; - inline ElementCount getVectorElementCount() const; - Type *getVectorElementType() const { - assert(getTypeID() == VectorTyID); - return ContainedTys[0]; - } - Type *getPointerElementType() const { assert(getTypeID() == PointerTyID); return ContainedTys[0]; diff --git a/llvm/lib/CodeGen/CodeGenPrepare.cpp b/llvm/lib/CodeGen/CodeGenPrepare.cpp index 5eb772d12abf..d6a216f9f12c 100644 --- a/llvm/lib/CodeGen/CodeGenPrepare.cpp +++ b/llvm/lib/CodeGen/CodeGenPrepare.cpp @@ -5262,7 +5262,7 @@ bool CodeGenPrepare::optimizeGatherScatterInst(Instruction *MemoryInst, if (!RewriteGEP && Ops.size() == 2) return false; - unsigned NumElts = Ptr->getType()->getVectorNumElements(); + unsigned NumElts = cast<VectorType>(Ptr->getType())->getNumElements(); IRBuilder<> Builder(MemoryInst); diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp index f8c7f784bf11..a05b375d5279 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp @@ -4263,7 +4263,7 @@ static bool getUniformBase(const Value *Ptr, SDValue &Base, SDValue &Index, Base = SDB->getValue(C); - unsigned NumElts = Ptr->getType()->getVectorNumElements(); + unsigned NumElts = cast<VectorType>(Ptr->getType())->getNumElements(); EVT VT = EVT::getVectorVT(*DAG.getContext(), TLI.getPointerTy(DL), NumElts); Index = DAG.getConstant(0, SDB->getCurSDLoc(), VT); IndexType = ISD::SIGNED_SCALED; diff --git a/llvm/unittests/IR/VPIntrinsicTest.cpp b/llvm/unittests/IR/VPIntrinsicTest.cpp index 919bac4ef266..35a1f3e9b4d7 100644 --- a/llvm/unittests/IR/VPIntrinsicTest.cpp +++ b/llvm/unittests/IR/VPIntrinsicTest.cpp @@ -107,7 +107,7 @@ TEST_F(VPIntrinsicTest, GetParamPos) { if (MaskParamPos.hasValue()) { Type *MaskParamType = F.getArg(MaskParamPos.getValue())->getType(); ASSERT_TRUE(MaskParamType->isVectorTy()); - ASSERT_TRUE(MaskParamType->getVectorElementType()->isIntegerTy(1)); + ASSERT_TRUE(cast<VectorType>(MaskParamType)->getElementType()->isIntegerTy(1)); } Optional<int> VecLenParamPos = _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits