From 339177d1da0c6f0cf181ba987836148acb526926 Mon Sep 17 00:00:00 2001 From: Christopher Tetreault Date: Fri, 12 Jun 2020 11:02:07 -0700 Subject: [PATCH] [SVE] Break dependency of Type.h on DerivedTypes.h Summary: Inline functions in Type.h depended upon inline functions isVectorTy and getScalarType defined in DerivedTypes.h. Reimplement these functions in Type.h in terms of Type Reviewers: rengolin, efriedma, echristo, c-rhodes, david-arm Reviewed By: echristo Subscribers: tschuett, rkruppe, psnobl, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D81684 --- llvm/include/llvm/IR/DerivedTypes.h | 8 -------- llvm/include/llvm/IR/Type.h | 10 ++++++++-- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/llvm/include/llvm/IR/DerivedTypes.h b/llvm/include/llvm/IR/DerivedTypes.h index 6a9c747..25eb783 100644 --- a/llvm/include/llvm/IR/DerivedTypes.h +++ b/llvm/include/llvm/IR/DerivedTypes.h @@ -537,8 +537,6 @@ public: } }; -bool Type::isVectorTy() const { return isa(this); } - /// Class to represent fixed width SIMD vectors class FixedVectorType : public VectorType { protected: @@ -705,12 +703,6 @@ unsigned Type::getPointerAddressSpace() const { return cast(getScalarType())->getAddressSpace(); } -Type *Type::getScalarType() const { - if (isVectorTy()) - return cast(this)->getElementType(); - return const_cast(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 7043775..1f54688 100644 --- a/llvm/include/llvm/IR/Type.h +++ b/llvm/include/llvm/IR/Type.h @@ -228,7 +228,9 @@ public: bool isPtrOrPtrVectorTy() const { return getScalarType()->isPointerTy(); } /// True if this is an instance of VectorType. - inline bool isVectorTy() const; + inline bool isVectorTy() const { + return getTypeID() == ScalableVectorTyID || getTypeID() == FixedVectorTyID; + } /// Return true if this type could be converted with a lossless BitCast to /// type 'Ty'. For example, i8* to i32*. BitCasts are valid for types of the @@ -304,7 +306,11 @@ public: /// If this is a vector type, return the element type, otherwise return /// 'this'. - inline Type *getScalarType() const; + inline Type *getScalarType() const { + if (isVectorTy()) + return getContainedType(0); + return const_cast(this); + } //===--------------------------------------------------------------------===// // Type Iteration support. -- 2.7.4